我需要在R中按组计算多列变量的所有水平的频率。我有一个数据框,其中包括一个分组变量和其他几列变量。其他列变量有3个水平-0、1和NA。
这是我的代码:
# a b c d group
1 1 1 1 NA 1
2 1 0 1 0 1
3 0 0 NA 1 1
4 0 NA 1 0 2
5 1 1 0 0 2
6 1 0 0 1 2
7 NA 0 1 NA 2
这是我需要的内容:
group level a b c d
1 0 1 2 0 1
1 2 1 2 1
NA 0 0 1 1
2 0 1 2 2 2
1 2 1 2 1
NA 1 1 0 1
我使用dplyr和lapply来解决这个问题。
我尝试了。
df %>%
mutate(a = factor(a, levels=0:1)) %>%
group_by(group, a) %>%
summarise(freq=n()) %>%
complete(a, fill=list(freq=0))
这可以让我得到想要的结果,但我必须为每列单独执行此操作。
我也尝试过。
lapply(df[(2:70)], table)
这让我得到了频率,但没有按组分类。
基本上,我需要以某种方式结合这两段代码。我需要能够将这两段代码结合在一起。