r - 如何在包含某个字符串的最后一列之后添加一列?
问题描述
我有一个这样的数据集
df <- data.frame(abc_1 = 1:10, abc_2 = 11:20, abc_3 = 21:30, somevar = 31:40)
head(df)
abc_1 abc_2 abc_3 somevar
1 1 11 21 31
2 2 12 22 32
3 3 13 23 33
4 4 14 24 34
5 5 15 25 35
6 6 16 26 36
我想在 abc_3 之后插入一个新列(在我的例子中是 abc_1、abc_2、abc_3 的行总和)。由于(a)数据集很大,(b)我可能决定在添加列之前操作数据集(即弄乱列索引),并且因为(c)我想对包含一些不同的变量执行此操作字符串,我希望使用一种不引用列索引而是匹配字符串 abc 的方式来执行此操作。
我在 tibble 包中找到了 add_column 但它只允许按其索引添加列,如下所示
library(tibble)
add_column(df, abc_sum = rowSum(abc_1, abc_2, abc_3), .after = 3)
我想要的是这样的:
abc_1 abc_2 abc_3 abc_sum somevar
1 1 11 21 33 31
2 2 12 22 36 32
3 3 13 23 39 33
4 4 14 24 42 34
5 5 15 25 45 35
6 6 16 26 48 36
我正在寻找.after = 3
通过匹配字符串 abc_3 将其替换为在 abc_3 之后插入它的表达式。
解决方案
你可以做:
add_column(df,
abc_sum = rowSums(df[startsWith(names(df), "abc")]),
.after = "abc_3")
abc_1 abc_2 abc_3 abc_sum somevar
1 1 11 21 33 31
2 2 12 22 36 32
3 3 13 23 39 33
4 4 14 24 42 34
5 5 15 25 45 35
6 6 16 26 48 36
7 7 17 27 51 37
8 8 18 28 54 38
9 9 19 29 57 39
10 10 20 30 60 40
推荐阅读
- google-sheets - 如何在 Google 表格中的 x 行后返回 TEXT 值
- esp8266 - 现在使用 esp 从 NodeMcu(ESP266) 向 ESP32 发送数据?
- hyperledger-fabric - 如何防止在链码进程之外访问状态数据库
- python - 在 matplotlib.pyplot 中缩放?
- c++ - 迭代向量内的向量
- php - 如何在 wordpress 中向我的引导搜索栏添加搜索功能?
- python - 我可以使用 Alexa 技能作为退出 while 循环的条件吗?
- python-3.x - 我想接受大约 10 ^ 5 的输入大小。但问题是我的 python 代码只需要 4096
- vee-validate - vee-validate 客户规则的错误
- arrays - 如何将带有对象的数组转换为一个对象,例如 Laravel Request 对象