Как не включать наблюдения NA в группировку при использовании group_by (), за которым следует summaze () с dplyr? - PullRequest
2 голосов
/ 04 февраля 2020

У меня есть датафрейм телефонных номеров, электронных писем и имен. Некоторые электронные письма продублированы с разными названиями. Меня не волнует, какое имя останется, поэтому я группируюсь по электронной почте и обобщаю, чтобы выбрать первое наблюдение имени и телефонных номеров. Тем не менее, некоторые адреса электронной почты отсутствуют, но я хочу, чтобы они не группировались, чтобы сохранить уникальные номера телефонов. Используя упрощенный пример, мои данные:

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, когда я делаю это. Как мне не дать НС сгруппироваться и обобщиться?

1 Ответ

1 голос
/ 04 февраля 2020

Возможно обрабатывать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...