r - Dplyr 计数/多个过滤器计数

标签 r dplyr

我正在尝试创建一个 summarise/filter dplyr 管道,其等效于以下内容:

iris %>%
mutate(Sepal.Area = Sepal.Length * Sepal.Width,
       Petal.Area = Petal.Length * Petal.Width) %>%
  group_by(Species) %>%
      filter(Sepal.Area < 17) %>%
        tally() %>%
      filter(Sepal.Area > 17 & Sepal.Area < 22) %>%
        tally() %>%
      filter(Sepal.Area > 22) %>%
        tally()

或者另一种可能的方法:

iris %>%
  mutate(Sepal.Area = Sepal.Length * Sepal.Width,
         Petal.Area = Petal.Length * Petal.Width) %>%
  group_by(Species) %>%
    summarise(n(Sepal.Area < 17),
              n(Sepal.Area > 17 & Sepal.Area < 22),
              n(Sepal.Area > 22))

通过分组中的多个过滤器获取计数的最简单方法是什么? 或者只是运行每个并稍后加入它们?

最佳答案

你可以尝试剪切:

iris %>%
    mutate(Sepal.Area = Sepal.Length * Sepal.Width,
           Petal.Area = Petal.Length * Petal.Width,
           range = cut(Sepal.Area, breaks = c(0, 17, 22, Inf))) %>%
    group_by(Species, range) %>%
    summarize(count = n())

#      Species    range count
#       <fctr>   <fctr> <int>
# 1     setosa   (0,17]    25
# 2     setosa  (17,22]    22
# 3     setosa (22,Inf]     3
# 4 versicolor   (0,17]    28
# 5 versicolor  (17,22]    21
# 6 versicolor (22,Inf]     1
# 7  virginica   (0,17]    10
# 8  virginica  (17,22]    31
# 9  virginica (22,Inf]     9

关于r - Dplyr 计数/多个过滤器计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43096225/

相关文章:

r - R中的SQLite中的表中的Collect()

r - 将向量转换为列表,向量中的每个元素作为列表中的元素

用组内的下一个可用数字替换 NA

r - 什么时候在 RStudio 中将数据存储在内存之外变得有益?

r - dplyr 过滤器仅获取其中一组采用的值

r - 多个 ifelse 语句和 dplyr 管道,无法识别第二个对象

r - R使用str_extract(stringr)导出 “_”之间的字符串

r - 添加具有另一个计数的列

r - 分割字符串而不丢失字符 - R

r - ggExtra绘图格式:不同绘图尺寸的相似边际绘图