r - 是否有 R 函数可以帮助我合并两个数据框?
问题描述
我Name
在 list.x 和list.yName
中有列。Suburb
我愿意加入他们的 list.x 和 list.y。问题是,Name
在 list.x 中,
Name
在 list.x 中由分隔!
而在 list.y 中由分隔,
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.list
Name
Suburb
解决方案
您似乎想要反转和替换您的名字,这很容易,但让我们将其压缩为一个函数以节省您一些时间。在这里,它将姓氏放在首位,然后添加其他名称。
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.y
merge
编辑以修复评论中的“Smith!Langley!White”问题。
推荐阅读
- java - 为什么在更改文本框中的内容时不会更改滚动条的大小?
- flutter - 如何使用 GridView 或 TableView 在颤振中制作填字游戏
- c++ - 在线性时间内编写代码作为 dp 问题的解决方案,但得到不合逻辑的答案
- python - Openpyxl 获取单元格值(对于有公式、无公式或日期时间的单元格)
- android - 尝试在 Ubuntu 系统模拟器中运行模拟器时出错:进程以退出代码 1 完成
- android - SettingsFragment : PreferenceFragmentCompat Activity 被Android系统移除后显示为黑色
- .net-core - 无法为符号文件索引一个或多个源文件
- android - 如何在不安装新版本的情况下更新已分发的应用程序
- laravel - 不在服务器上的 laravel echo server cli 中发送身份验证请求
- java - 找不到文件 (.txt)