r - 如何将以下数据集合并为独立行?
问题描述
我想从两个现有的数据框创建一个新的数据框,它们共享名为名字、姓氏和电子邮件的列,但我希望以第二个数据框只粘在第一个数据框上的方式合并它们,以便创建我拥有的所有电子邮件的列表。数据框包含重复项,因此我希望保留它们以在下一步中继续消除它们。显然,我在下面发布的代码不起作用。有什么帮助吗?
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)]
预期的输出将是一个包含所有电子邮件的连接数据集,除了 mike rice 的电子邮件,因为在重复的电子邮件中。
解决方案
您的可重现示例有点令人困惑,因此我为您制作了一个新示例,以查看这是否是您要查找的内容:
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")
)
现在,使用 dplyr 有两种不同的方法可以做到这一点:
library(dplyr)
df1 %>%
bind_rows(df2) %>%
distinct(first, last, .keep_all = TRUE)
或者:
df1 %>%
full_join(df2)
希望这可以帮助!
推荐阅读
- azure - 在 Azure DevOps 中传递“searchCriteria.refName=master”参数时无法获取推送列表
- angular - 获取双重嵌套表单数组的控件
- excel - Google 表格可以从 Excel 电子表格中检索数据吗?
- powershell - Powershell 参数绑定 ByPropertyName 和 ByValue
- java - 开始拖动时,Libgdx 拖放崩溃
- selenium - Selenium 无法为不同的查找选项找到元素
- php - PHP curl:如何在命令行中传递具有数组语法的参数?
- kubernetes - 在另一个中使用 Kubernetes 秘密
- python - 如何使用需要滚动数据的自定义功能的 Pandas 滚动窗口?
- javascript - jQuery获取点击的元素父元素,然后是它的子元素