繁体   English   中英

使用 group_by() 后跟 summarise() 和 dplyr 时,如何不将 NA 观测值包含在分组中?

[英]How to not include NA observations in grouping when using group_by() followed by summarize() with dplyr?

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

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 组合在一起并被汇总?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM