【发布时间】:2014-05-27 01:59:40
【问题描述】:
我在 R 中有两个不同的数据框,我正在尝试将它们合并在一起。一个只是一组名称,另一个是一组名称,其中包含每个人的相应信息。
所以说我想获取第一个数据帧:
Name
1. Blow, Joe
2. Smith, John
3. Jones, Tom
etc....
并将其合并到这个:
DonorName CandidateName DonationAmount CandidateParty
1 blow joe Bush, George W 3,000 Republican
2 guy some Obama, Barack 5,000 Democrat
3 smith john Reid, Harry 4,000 Democrat
这样我就有一个新列表,其中仅包含我的第一个列表中的人员以及第二个列表中的信息。如果两个“名称”值的格式相同,我可以只使用merge(),但是有没有办法以某种方式使用agrep() 或pmatch() 来做到这一点?
另外,我正在使用的第二个数据帧中有大约 2500 万行和 6 列,那么制作 for 循环是最快的方法吗?
示例数据的可重现版本:
first <- data.frame(Name=c("Blow, Joe","Smith, John","Jones, Tom"),
stringsAsFactors=FALSE)
second <- read.csv(text="
DonorName|CandidateName|DonationAmount|CandidateParty
blow joe|Bush, George W|3,000|Republican
guy some|Obama, Barack|5,000|Democrat
smith john|Reid, Harry|4,000|Democrat",header=TRUE,sep="|",
stringsAsFactors=FALSE)
【问题讨论】:
-
您的格式在每个数据集中是否始终相同,还是在每个数据集中有所不同?
-
@StanO 这个问题已经回答了哪个有效的解决方案?如果不是,请提出需要的建议,否则请接受适当的解决方案,或者如果下面没有提供,请写下+接受您自己的解决方案
-
对不起,我以为我已经检查了您的答案,但似乎没有。迟来的感谢您对此提出的宝贵建议!
标签: r merge fuzzy-search agrep