gpt4 book ai didi

r - 计算特定组的相对频率

转载 作者:行者123 更新时间:2023-12-04 11:55:22 24 4
gpt4 key购买 nike

我有一个分类变量的 data.frame,我已将其分成几组,我得到了每组的计数。

My original data nyD looks like:

Source: local data frame [7 x 3]
Groups: v1, v2, v3

v1 v2 v3
1 a plus yes
2 a plus yes
3 a minus no
4 b minus yes
5 b x yes
6 c x notk
7 c x notk

I performed the following operations using dplyr:

ny1 <- nyD %>% group_by(v1,v2,v3)%>%
summarise(count=n()) %>%
mutate(prop = count/sum(count))


My data "ny1" looks like:

Source: local data frame [5 x 5]
Groups: v1, v2

v1 v2 v3 count prop
1 a minus no 1 1
2 a plus yes 2 1
3 b minus yes 1 1
4 b x yes 1 1
5 c x notk 2 1

我想计算与 prop 变量中的 V1 组相关的相对频率。 prop 变量应该是相应的计数除以“V1 组的计数总和”。 V1组共有3个“a”、2个“b”和1个“c”。也就是说,ny1$prop[1] <- 1/3, ny1$prop[2] <- 2/3....使用 count/sum(count) 的 mutate 操作不正确。我需要指定总和应该只对 V1 组实现。有没有办法使用 dplyr 来实现这一点?

最佳答案

您可以一步完成这一切(从您的原始数据 nyD 而无需创建 ny1)。这是因为当您在 summarise 之后运行 mutate 时,dplyr 将降低一个聚合级别 (v2)默认(当然是我在 dplyr 中最喜欢的功能)并且只会通过 v1

聚合
nyD %>% 
group_by(v1, v2) %>%
summarise(count = n()) %>%
mutate(prop = count/sum(count))

# Source: local data frame [5 x 4]
# Groups: v1
#
# v1 v2 count prop
# 1 a minus 1 0.3333333
# 2 a plus 2 0.6666667
# 3 b minus 1 0.5000000
# 4 b x 1 0.5000000
# 5 c x 2 1.0000000

或者使用 count 的更短版本(感谢@beginneR)

df %>% 
count(v1, v2) %>%
mutate(prop = n/sum(n))

关于r - 计算特定组的相对频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676128/

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