Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R, data.table: Sum all columns whose names are stored in a vector

From a data.table d such as for example

require(data.table)
d = data.table(a = 1:4, b = 11:14, c = 21:24, group = c(1,1,2,2))

I would like to sum all variables which names are stored in the vector varsToSum by unique values of group.

varsToSum = c("a", "b")

For the above d and varsToSum, the expected outcome is

d[,list(a = sum(a), b = sum(b)),list(group)]

   group a  b
    1: 1 3 23
    2: 2 7 27

Related posts:

  • Select / assign to data.table variables which names are stored in a character vector

  • How to go from a vector of strings to a vector of quotes / names?

like image 687
Remi.b Avatar asked Jan 27 '23 23:01

Remi.b


1 Answers

d[, lapply(.SD, sum), by = group, .SDcols = varsToSum]

   group a  b
1:     1 3 23
2:     2 7 27
like image 118
Michael Ohlrogge Avatar answered Apr 30 '23 08:04

Michael Ohlrogge