[英]How create the frequency table with multiple columns in R?
我正在尝试制作具有多列的频率表。 我的数据是
C = as.factor(sample( LETTERS[1:2], 100, replace = TRUE, prob = c(rep(1/2, 2))))
R1 = sample(c(-1, 1), 100, replace = TRUE)
R2 = sample(c(-1, 1), 100, replace = TRUE)
R3 = sample(c(-1, 1), 100, replace = TRUE)
data = data.frame(R1, R2, R3, C)
rowb = expand.grid(data.frame(r1 = c(-1, 1), r2 = c(-1, 1), r3 = c(-1, 1)))
我的目标频率表是该行包含rowb的组合,而列为 C。 此时, R1,R2和R3与该行匹配。 如果找不到匹配项,则该元素的值为零。
我附加了目标频率表的结构。
根据提供的图像,您似乎只想创建一个连接R1-3的新变量,然后用C制成表格即可; 您可以只使用paste()
:
data$comb <- factor(paste(data$R1, data$R2, data$R3),
# make sure the levels are in the right order:
levels = paste(rowb$r1, rowb$r2, rowb$r3))
table(data$comb, data$C)
输出
A B
-1 -1 -1 5 5
1 -1 -1 6 4
-1 1 -1 6 5
1 1 -1 8 10
-1 -1 1 7 4
1 -1 1 9 5
-1 1 1 5 7
1 1 1 4 10
我们可以使用dcast
的data.table
并与“ rowb”一起使用
library(data.table)
dcast(setDT(data), R1+R2+R3~C, length)[rowb, on = .(R1=r1, R2 = r2, R3 = r3)]
或者先加入,然后进行dcast
dcast(setDT(data)[rowb , on = .(R1=r1, R2 = r2, R3 = r3)], ...~C)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.