【发布时间】:2020-05-05 18:53:12
【问题描述】:
library(data.table)
data = data.table("STUDENT" = c(1:100),
"SAMPLEWEIGHT" = sample(12:99, r = T, 100),
"LABEL1" = sample(1:2, r = T, 100),
"LABEL3" = sample(1:3, r = T, 100),
"CAT"=sample(0:1,r = T, 100),
"FOX"=sample(0:1,r = T, 100),
"DOG"=sample(0:1,r = T, 100),
"MOUSE"=sample(0:1,r = T, 100),
"BIRD"=sample(0:1,r = T, 100))
dataWANT = data.frame("LABEL1" = c(1,1,1,2,2,2),
"LABEL3" = c(1,2,3,1,2,3),
"CAT_N" = NA,
"CAT_PER" = NA,
"FOX_N" = NA,
"FOX_PER" = NA,
"DOG_N" = NA,
"DOG_PER" = NA,
"MOUSE_N" = NA,
"MOUSE_PER" = NA,
"BIRD_N" = NA,
"BIRD_PER" = NA)
我有一个名为 data.table 的 data.table,我正在尝试总结学生数据,就像 dataWANT 中显示的那样。
在 dataWANT 中,末尾有 _N 的列只是每个 LABEL1 和 LABEL3 组合等于 1 的列中值的计数,因此总共 6 个组。
在 dataWANT 中,末尾有 _PER 的列是其列中有 _PER 的组的加权比例。
【问题讨论】:
-
你需要
data[, c(setNames(lapply(.SD, sum), paste0(names(.SD), "_N")), setNames(lapply(.SD, function(x) weighted.mean(x == 1, SAMPLEWEIGHT)), paste0(names(.SD), "_PER"))),.(LABEL1, LABEL3), .SDcols = CAT:BIRD]
标签: r data.table summary