首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不一致性相对频率输出的总结与变异

不一致性相对频率输出的总结与变异
EN

Stack Overflow用户
提问于 2017-10-13 14:39:58
回答 2查看 46关注 0票数 0

我想计算一组值相对于其余组的相对频率。例如,计算gear==3am==0中的相对频率。我使用以下方法进行计算。

代码语言:javascript
运行
复制
library(dplyr)

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

# Source: local data frame [4 x 4]
# Groups: am [2]
# 
# # A tibble: 4 x 4
#     am  gear     N      freq
#   <dbl> <dbl> <int>     <dbl>
# 1     0     3    15 0.7894737
# 2     0     4     4 0.2105263
# 3     1     4     8 0.6153846
# 4     1     5     5 0.3846154

上述输出与预期的相同。但是,我希望将freq值作为原始数据集中具有相同值的新列。我尝试了以下计算计数Ǹ和相对频率freq的方法。

代码语言:javascript
运行
复制
mtcars %>% 
  select(am, gear) %>% 
  group_by(am, gear) %>% 
  mutate(N = n()) %>%
  group_by(am) %>% 
  mutate(freq = N / sum(N))

# Source: local data frame [32 x 4]
# Groups: am [2]
# 
# # A tibble: 32 x 4
#      am  gear     N       freq
#   <dbl> <dbl> <int>      <dbl>
# 1     1     4     8 0.08988764
# 2     1     4     8 0.08988764
# 3     1     4     8 0.08988764
# 4     0     3    15 0.06224066
# 5     0     3    15 0.06224066
# 6     0     3    15 0.06224066
# 7     0     3    15 0.06224066
# 8     0     4     4 0.01659751
# 9     0     4     4 0.01659751
# 10     0     4     4 0.01659751
# # ... with 22 more rows

现在,它给出了不同的输出。可能是什么原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-13 14:58:09

您还需要重新计算am组的N个大小:

代码语言:javascript
运行
复制
mtcars %>% 
  select(am, gear) %>% 
  group_by(am, gear) %>% 
  mutate(N = n()) %>% 
  group_by(am) %>% 
  mutate(freq = N / n())

这将得到预期的结果。

票数 2
EN

Stack Overflow用户

发布于 2017-10-13 14:43:03

一个更好的选择是带有摘要输出的left_join ('res')。

代码语言:javascript
运行
复制
mtcars %>%
        select(am, gear) %>%
        left_join(., res)

如果我们看一下sum(N),它的值要大一点,因为行数更多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46732446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档