首页 > 解决方案 > 是否有 R 函数可以帮助我合并两个数据框?

问题描述

Name在 list.x 和list.yName中有列。Suburb我愿意加入他们的 list.x 和 list.y。问题是,Name在 list.x 中,

  1. Name在 list.x 中由分隔!而在 list.y 中由分隔,
  2. Name在 list.x 中,名字然后是姓氏,e!而在 list.y 中,姓氏然后是名字。
list.x = data.frame(
         Name = c("John!Citizen","Dipayan!Banerjee","Smith!Langley!White"))

list.y = data.frame(
Name = c("White,Smith,Langley","Citizen,John","Banerjee,Dipayan"),
Suburb = c("Langley","Mars","Here"))

我想匹配byx.list并映射.y.listNameSuburb

标签: r

解决方案


您似乎想要反转和替换您的名字,这很容易,但让我们将其压缩为一个函数以节省您一些时间。在这里,它将姓氏放在首位,然后添加其他名称。

revcollapse <- function(x) { paste(c(x[length(x)],x[-length(x)]), collapse=",") }

然后你可以修复list.x Name变量

list.x$Name <- unlist(lapply(strsplit(list.x$Name, split="[!]"), revcollapse))

现在你可以合并了。

new.list <- merge(list.x, list.y, by="Name")

您可能想在通话中弄乱all.x和。all.ymerge

编辑以修复评论中的“Smith!Langley!White”问题。


推荐阅读