gpt4 book ai didi

dplyr 的相对频率/比例

转载 作者:行者123 更新时间:2023-12-03 04:30:00 27 4
gpt4 key购买 nike

假设我想计算每个组中不同值的比例。例如,使用 mtcars 数据,如何计算 am齿轮数量的相对频率(自动/手动)用 dplyr 一次性完成?

library(dplyr)
data(mtcars)
mtcars <- tbl_df(mtcars)

# count frequency
mtcars %>%
group_by(am, gear) %>%
summarise(n = n())

# am gear n
# 0 3 15
# 0 4 4
# 1 4 8
# 1 5 5

我想要实现的目标:

am gear  n rel.freq
0 3 15 0.7894737
0 4 4 0.2105263
1 4 8 0.6153846
1 5 5 0.3846154

最佳答案

试试这个:

mtcars %>%
group_by(am, gear) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n))

# am gear n freq
# 1 0 3 15 0.7894737
# 2 0 4 4 0.2105263
# 3 1 4 8 0.6153846
# 4 1 5 5 0.3846154

来自dplyr vignette :

When you group by multiple variables, each summary peels off one level of the grouping. That makes it easy to progressively roll-up a dataset.

因此,在summarise之后,group_by中指定的最后一个分组变量“gear”被剥离。在 mutate 步骤中,数据按剩余的分组变量(此处为“am”)进行分组。您可以使用groups检查每个步骤中的分组情况。

剥离的结果当然取决于 group_by 调用中分组变量的顺序。您可能希望执行后续的 group_by(am) 操作,以使您的代码更加明确。

有关舍入和美化的信息,请参阅@Tyler Rinker 的精彩回答。

关于dplyr 的相对频率/比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576515/

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