首页 > 解决方案 > R数据表的总和列,其名称存储在向量中

问题描述

我有以下数据表:

dt_test <- data.table(day = 1:3, a = c(1,1,1), b = c(2,2,2))

     day  a b
1:   1    1 2
2:   2    1 2
3:   3    1 2

另外,我有一个向量,其中包含要添加的列:

vecCols <- c("a", "b")

我想sums在我的数据表中有一个新列,在这种情况下只是sums := a + b,或者 vecCols 中所有列的总和(来自 vecCols 的输入在不同情况下可能会有所不同,它是动态填充的)

此示例中的输出应如下所示:

     day  a b sums
1:   1    1 2    3
2:   2    1 2    3
3:   3    1 2    3

标签: rdata.table

解决方案


您可以rowSums在相关子集上使用:

dt_test <- data.table::data.table(day = 1:3, a = c(1,1,1), b = c(2,2,2))
vecCols <- c("a", "b")

dt_test[,sums := rowSums(.SD[,vecCols, with = FALSE])]

或者

dt_test[,sums := rowSums(.SD), .SDcols = vecCols]

dt_test
#>    day a b sums
#> 1:   1 1 2    3
#> 2:   2 1 2    3
#> 3:   3 1 2    3

推荐阅读