【问题标题】:dplyr chain filter based on frequency [duplicate]基于频率的dplyr链过滤器[重复]
【发布时间】:2017-12-19 04:52:29
【问题描述】:
table(mtcars$cyl)

 4  6  8 
11  7 14 

假设我想过滤低频项,在这种情况下少于 10 个。有没有优雅的 dplyr 式方法来做到这一点?

mtcars %>% group_by(cyl) %>% filter([???])

结果将是一个只有 4 和 8 个 cyl 的数据框,因为它们都出现了 10 次或更多次。

【问题讨论】:

标签: r dplyr


【解决方案1】:

cyl 分组,计算行数,过滤,可选择删除freq 列:

library(dplyr)
mtcars %>% 
  group_by(cyl) %>% 
  mutate(freq = n()) %>% 
  ungroup() %>% 
  filter(freq > 9) %>%
  select(-freq)

【讨论】:

  • 谢谢,ungroup() 是做什么的?
  • 它删除了cyl的分组。通常最好在程序完成后发送至ungroup,因为将其留在那里可能会在以后产生意想不到的后果。
  • 为什么不mtcars %>% group_by(cyl) %>% filter(n() > 9)
  • 为什么不这样 :) 我更喜欢显式变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2021-02-21
  • 2014-09-10
  • 2014-10-19
相关资源
最近更新 更多