【问题标题】:How to not include NA observations in grouping when using group_by() followed by summarize() with dplyr?使用 group_by() 后跟 summarise() 和 dplyr 时,如何在分组中不包括 NA 观察?
【发布时间】:2020-02-04 02:01:02
【问题描述】:

我有一个包含电话号码、电子邮件和姓名的数据框。有些电子邮件是重复的,名称拼写不同。我真的不在乎留下哪个名字,所以我通过电子邮件分组,并总结选择首先观察姓名和电话号码。但是,有一些电子邮件地址丢失,但我想防止它们组合在一起,以便我可以保留唯一的电话号码。使用一个简化的例子,我的数据是:

data <- data.frame(x=c(1,2,3,4,5,5,5,6), y=c("a","b","c",NA,"d","d","d",NA))
data %>% group_by(y) %>% summarize(x=first(x))

当我这样做时,我失去了数字 6。如何防止 NA 组合在一起并被汇总?

【问题讨论】:

    标签: r dplyr grouping


    【解决方案1】:

    可能单独处理NAs 并将它们绑定到原始数​​据。

    library(dplyr)
    
    data %>%
      filter(!is.na(y)) %>%
      group_by(y) %>%
      summarize(x=first(x)) %>%
      bind_rows(data %>% filter(is.na(y)))
    
    # A tibble: 6 x 2
    #  y         x
    #  <fct> <dbl>
    #1 a         1
    #2 b         2
    #3 c         3
    #4 d         5
    #5 NA        4
    #6 NA        6
    

    【讨论】:

      猜你喜欢
      • 2019-03-19
      • 2020-06-04
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多