Рассчитать процентные сводки в data.table - PullRequest
0 голосов
/ 15 октября 2018

Если это мой набор данных:

library(data.table)    
dt <- data.table(
  record=c(1:20),
  area=rep(LETTERS[1:4], c(4, 6, 3, 7)), 
  score=c(1,1:3,2:3,1,1,1,2,2,1,2,1,1,1,1,1:3),
  cluster=c("X", "Y", "Z")[c(1,1:3,3,2,1,1:3,1,1:3,3,3,3,1:3)]
)

Каков наилучший способ использования data.table для расчета процентных сумм, подобных этому:

prop.table(table(dt$area, dt$score), 1)*100

Однако я бы также хотел большегибкость во входных данных этого резюме.Например, включая только записи, которые принадлежат кластеру «X» или кластерам «Y» и «Z»)

1 Ответ

0 голосов
/ 15 октября 2018
dt[,.N,by=list(area,score)][,perc:=100*N/sum(N),by=area][,.SD]

и dcast.data.table, если вам нужно

...