tidyverse:汇总时计算特定级别的数量

Dom*_*ski 3 group-by r dplyr summarize tidyverse

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

在下面的工作示例中,我想计算"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 = ???)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

akr*_*run 6

我们可以sumlogical vectorie上使用Factor == "male"。当我们执行以下操作时,TRUE/FALSE将被强制1/0获取“男性”元素的频率sum

df %>%
   group_by(Group) %>% 
   summarise(Value = mean(Value), 
             n_male = sum(Factor=="male"))
Run Code Online (Sandbox Code Playgroud)

  • 除此之外,您还可以将过滤器应用于变量`Factor`:`n_male = length(Factor[Factor=="male"]))` (2认同)