【问题标题】:Delete/Filter rows based on the dplyr groupby output根据 dplyr groupby 输出删除/过滤行
【发布时间】:2016-03-10 04:01:27
【问题描述】:

假设我有一个如下的数据框,

ID <- c("A","A","A","B","B","B","C","C") 
Type <- c(45,46,47,45,46,47,45,46)
Point_A <- c(10,15,20,8,9,10,35,33) 
df <- data.frame(ID,Type,Point_A)

我正在对这个数据框使用 dplyr groupby 函数,

library(dplyr)
df %>% group_by(ID) %>% summarise(q=n())

以下是我得到的输出,

      ID     q
  (fctr) (int)
1      A     3
2      B     3
3      C     2

现在我想过滤计数为 2 的行。理想情况下,代码应该删除计数为 2 之后的行。代码的输出应该是,

  ID Type Point_A
1  A   45      10
2  A   46      15
3  A   47      20
4  B   45       8
5  B   46       9
6  B   47      10

因为计数为 2 的行已被删除。

可以这样做吗?有人可以帮我做这件事吗?

谢谢

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    您可以同时使用n()filter(),而无需summarize()

    df %>%
      group_by(ID) %>%
      filter(n() != 2)
    
    # Source: local data frame [6 x 3]
    # Groups: ID [2]
    # 
    #       ID  Type Point_A
    #   (fctr) (dbl)   (dbl)
    # 1      A    45      10
    # 2      A    46      15
    # 3      A    47      20
    # 4      B    45       8
    # 5      B    46       9
    # 6      B    47      10
    

    【讨论】:

    • 谢谢.. 很有帮助。现在无法接受答案。 10分钟内搞定
    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2018-07-10
    • 2015-07-28
    相关资源
    最近更新 更多