计算data.table中的百分比汇总

时间:2018-10-15 11:20:43

标签: r data.table summarize

如果这是我的数据集:

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 :(得分:2)

dt[,.N,by=list(area,score)][,perc:=100*N/sum(N),by=area][,.SD]

和dcast.data.table(如果需要)