【发布时间】:2019-08-27 18:23:36
【问题描述】:
我需要为 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)
这让我得到了频率,但不是按组。
我基本上需要以某种方式将这两段代码结合起来。我需要能够结合这两段代码。
【问题讨论】: