【发布时间】:2026-01-12 15:05:01
【问题描述】:
我们有 DF
df <- data.frame(group=as.factor(rep(c("UP","DOWN"),6)),variables=(rep(c("sex","smoke","sport"),each=4))
,values=as.factor(c(1,1,1,0 ,1,1,0,0, 1,1,1,1)))
group variables values
1 UP sex 1
2 DOWN sex 1
3 UP sex 1
4 DOWN sex 0
5 UP smoke 1
6 DOWN smoke 1
7 UP smoke 0
8 DOWN smoke 0
9 UP sport 1
10 DOWN sport 1
11 UP sport 1
12 DOWN sport 1
>
现在我想知道所有级别的所有计数
library(plyr)
这个命令几乎完全符合我的要求
count(df, c("variables", "group", "values"))
variables group values freq
1 sex DOWN 0 1
2 sex DOWN 1 1
3 sex UP 1 2
4 smoke DOWN 0 1
5 smoke DOWN 1 1
6 smoke UP 0 1
7 smoke UP 1 1
8 sport DOWN 1 2
9 sport UP 1 2
我还想计算未观察到的因子水平。就像我在以下输出中所做的那样。
variables group values freq
1 sex DOWN 0 1
2 sex DOWN 1 1
3 sex UP 0 0 <--
4 sex UP 1 2
5 smoke DOWN 0 1
6 smoke DOWN 1 1
7 smoke UP 0 1
8 smoke UP 1 1
9 sport DOWN 0 0 <--
10 sport DOWN 1 2
11 sport UP 0 0 <--
12 sport UP 1 2
如何才能实现上述输出?
【问题讨论】:
-
一种选择是使用
expand.grid生成所有可能性的df,然后使用join这个count的结果 -
有人可以为此示例预编码吗?
标签: r count aggregate plyr r-factor