我有以下数据表:
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
答案 0 :(得分:3)
您可以在相关子集上使用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
答案 1 :(得分:0)
您可以使用dplyr:
dt_test %>%
mutate(Sum = rowSums(select(., matches(paste0(vecCols, collapse = "|")), -day)))