也许题目没有说得太清楚,但我不知道如何更好地表述,于是我提出了这个问题:
我在r中使用的数据框如下所示,但要大得多:
df <- data.frame(ref = c("01","02","03","04","05"),
var1 = c(2,3,6,8,5),
var2 = c(3,8,1,5,7),
var3 = c(1,1,4,5,6),
columns_to_sum = c("var1, var2",
"var1, var3",
"var2, var3",
"var1, var2, var3",
"var1"))
我想要得到的是一个新列,它是名称在该列中的列的值的总和的结果:“columns_to_sum”。因此,结果 Dataframe 将类似于:
为了以防万一,我将结果添加到下面代码行中的可重现示例中:
df <- data.frame(ref = c("01","02","03","04","05",
var1 = c(2,3,6,8,5),
var2 = c(3,8,1,5,7),
var3 = c(1,1,4,5,6),
columns_to_sum = c("var1, var2",
"var1, var3",
"var2, var3",
"var1, var2, var3",
"var1"),
result_column = c(5,4,5,18,5)
)
我已经在rowSums函数中使用过dplyr::select函数几次了,例如:
df_rs <- df %>% mutate(
result_column = rowSums(dplyr::select(., matches("var")))
)
但是,我找不到一种方法来选择列中包含的列进行求和:“列到总和”。
你知道吗?
先谢谢你了!
2条答案
按热度按时间wtzytmuj1#
遍历行,获取列名- strsplit 和 sum:
tvz2xvvm2#
我还有个主意。