按不同值的计数过滤列

时间:2017-08-03 15:55:46

标签: r dplyr

我有一个数据框,如:

my_tibble <- tibble::tibble(A=c('a','a','b','a','a','b', 'c'), B = c(1,0,0,1,1,1,1)) 

然后,我可以计算B栏上A的百分比

my_tibble%>%
  group_by(A) %>%
   summarise (percentage = mean(B)) %>%
   filter(percentage > 0)

我如何移除c之类的记录,这些记录只构成一个/太少的观察值以产生有意义的百分比?

my_tibble %>%
  count(A) %>%
  mutate(prop = prop.table(n))

是第一次尝试识别这些记录。但我不确定如何将其包含在过滤条件中。

1 个答案:

答案 0 :(得分:2)

您可以在摘要中添加另一列来计算每个组的记录数,然后根据它进行过滤:

my_tibble %>% 
    group_by(A) %>% 
    summarise(percentage = mean(B), n = n()) %>% 
    filter(percentage > 0, n > 1)

# A tibble: 2 x 3
#      A percentage     n
#  <chr>      <dbl> <int>
#1     a       0.75     4
#2     b       0.50     2
相关问题