gpt4 book ai didi

r 按子组计算多个列的所有因子水平的频率

转载 作者:行者123 更新时间:2023-12-04 09:34:43 25 4
gpt4 key购买 nike

我需要按组计算 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)

这让我得到了频率,但不是按组。

我基本上需要以某种方式组合这两段代码。我需要能够组合这两段代码。

最佳答案

一个 dplyrtidyr 可能是:

df %>%
gather(var, level, -group) %>%
group_by(group, var, level) %>%
summarise(val = n()) %>%
spread(var, val, fill = 0)

group level a b c d
<int> <int> <dbl> <dbl> <dbl> <dbl>
1 1 0 1 2 0 1
2 1 1 2 1 2 1
3 1 NA 0 0 1 1
4 2 0 1 2 2 2
5 2 1 2 1 2 1
6 2 NA 1 1 0 1

关于r 按子组计算多个列的所有因子水平的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57680325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com