【问题标题】:tidyverse: count number of a specific level when summarizingtidyverse:汇总时计算特定级别的数量
【发布时间】:2017-08-14 18:25:17
【问题描述】:

我想在分组后总结时,计算另一个因素的特定级别的数量。

在下面的工作示例中,我想计算每个组中"male" 级别的数量。我用计数、计数等方法尝试了很多东西,但找不到一种直接而简洁的方法。

df <- data.frame(Group=replicate(20, sample(c("A","B"), 1)),
                 Value=rnorm(20),
                 Factor=replicate(20, sample(c("male","female"), 1)))
df %>% 
  group_by(Group) %>% 
  summarize(Value = mean(Value),
            n_male = ???)

感谢您的帮助!

【问题讨论】:

  • 也许with(df, table(Factor))with(df, table(Factor, Group)) 也会感兴趣。

标签: r group-by dplyr tidyverse summarize


【解决方案1】:

我们可以在logical vector 上使用sum,即Factor == "male"。当我们执行sum 时,TRUE/FALSE 将被强制转换为1/0 以获取“男性”元素的频率

df %>%
   group_by(Group) %>% 
   summarise(Value = mean(Value), 
             n_male = sum(Factor=="male"))

【讨论】:

  • 除此之外,您还可以对变量 Factor 应用过滤器:n_male = length(Factor[Factor=="male"]))
猜你喜欢
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多