Как объединить следующий набор данных, как независимые строки? - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы создать новый фрейм данных из двух существующих фреймов данных, они имеют общие столбцы с именами, фамилиями и адресами электронной почты, но я хочу объединить их так, чтобы второй фрейм данных просто привязывался к первому.для того, чтобы создать список всех писем, которые у меня есть.фреймы данных содержат дубликаты, поэтому я хочу сохранить их, чтобы перейти к их устранению на следующем шаге.Очевидно, код, который я разместил ниже, не работает.Любая помощь?

first <- c("andrea","luis","mike","thomas")
last <- c("robinson", "trout", "rice","snell")
email <- c("andrea@gmail.com", "lt@gmail.com", "mr@gmail.com", "tom@gmail.com")



first <- c("mike","steven","mark","john", "martin")
last <- c("rice", "berry", "smalls","sale", "arnold")
email <- c("mr@gmail.com", "st@gmail.com", "ms@gmail.com", "js@gmail.com", "ma@gmail.com)
alz <- c(1,2,NA,3,4)
der <- c(0,2,3,NA,3)

all_emails <- data.frame(first,last,email)
no_contact_emails <- data.frame(first,last,email,alz,der)

df <- merge(no_contact_emails, all_emails, all = TRUE)

df <- df$email[!duplicated(df$email) & !duplicated(df$email, fromLast = TRUE)]

Ожидаемый результат будет набор данных объединения со всеми электронными письмами, кроме одного для Майка Райса, так как в дубликате.

1 Ответ

0 голосов
/ 20 сентября 2018

Ваш воспроизводимый пример немного сбивает с толку, поэтому я сделал вам новый, чтобы увидеть, если это то, что вы ищете:

df1 <- data.frame(
    first = c("andrea","luis","mike","thomas"),
    last = c("robinson", "trout", "rice","snell"),
    email = c("andrea@gmail.com", "lt@gmail.com", "mr@gmail.com", "tom@gmail.com")
    )

df2 <- data.frame(
    first = c("mike","steven","mark","john", "martin"),
    last = c("rice", "berry", "smalls","sale", "arnold"),
    email = c("mr@gmail.com", "st@gmail.com", "ms@gmail.com", "js@gmail.com", 
    "ma@gmail.com")
    )

Теперь, есть 2 различных способа сделать это,используя dplyr:

library(dplyr)

df1 %>%
   bind_rows(df2) %>%
   distinct(first, last, .keep_all = TRUE)

Или:

df1 %>%
   full_join(df2)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...