R数据表的总和列,其名称存储在向量中

时间:2020-01-24 15:01:32

标签: r data.table

我有以下数据表:

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

2 个答案:

答案 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)))
相关问题