таблица агрегированных данных в r - PullRequest
0 голосов
/ 18 октября 2018

У меня есть большая таблица данных, которую нужно агрегировать по одной переменной (ID).Переменная Vb должна быть агрегирована как сумма, но переменная Vc должна просто сохранять свое значение, поскольку она имеет одинаковое значение для каждого идентификатора (аналогично агрегированию по первому значению в SPSS).

DT <- data.table(ID = c(11, 11, 22, 22, 22, 44, 55, 55, 55), 
    Vb=c(50,40,4,3,2,8,9,11,5), Vc = c(1,1,3,3,3,1,2,2,2))

У меня примерно 15Переменные для агрегирования (половина из них по сумме, другие по значению), поэтому был бы оценен наиболее эффективный способ!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Используя sqldf:

Мы можем group by ID и sum(Vb), как показано ниже:

library(sqldf)
sqldf("select ID,sum(Vb),VC from DT group by ID") # If Vc is unique

ИЛИ

sqldf("select ID,sum(Vb),VC from DT group by ID,Vc") # If Vc is not unique

Вывод:

  ID sum(Vb) Vc
1 11      90  1
2 22       9  3
3 44       8  1
4 55      25  2
0 голосов
/ 18 октября 2018

Это должно работать (если Vc действительно уникален):

DT[, .(Vb=sum(Vb), Vc=unique(Vc)), by=ID]
...