【发布时间】:2015-02-20 04:35:40
【问题描述】:
我正在尝试在两个不同数据帧的两列之间查找重复项。在识别出重复项后,我想从重复项所在的同一行但从不同的列中提取观察值,并将其插入到另一个数据框中。我举个例子:
Table1:
tobecopied B Checkfordup D
Copy1 2 dupchk1 5
Copy2 3 dupchk5 4
Copy3 4 dupchk4 K
Table2:
tobepastedinto B Checkfordup D
5 dupchk1 L
6 dupchk2 M
7 dupchk4 3
所以代码运行后,表二会是这样的:
Updated Table2:
tobepastedinto B Checkfordup D
Copy1 5 dupchk1 L
6 dupchk2 M
Copy3 7 dupchk4 3
我尝试做的是创建一个函数来执行此操作并在两列中使用 mapply。下面是代码的样子:
checknum <- function(x,y){
if(y=x){
gsub(x,y,Table2$tobepastedinto)
}
else{""}
}
mapply(checknum,Table2$Checkfordup,Table1$Checkfordup)
该函数在 R 中运行需要很长时间,我很确定我做错了。有没有人对我正在尝试做的事情有更好的解决方案?或者有没有更好的方法来使用mapply?
编辑: 这是小数据集。 NASET 里面没有数字。我想看看 Numberset 中是否有任何手机与 NASET 中的手机匹配,然后将相应的 Number 添加到 NASET,即使名称不匹配:
NASET:
name Number mobile
VAN 678
GEORGE 6564
STEVEN 76787
Numberset:
name Number mobile
TEU 7 678
GEGE 6 64
VEN 5 87
TETK 7 678
Updated NASET:
NASET:
name Number mobile
VAN 7 678
GEORGE 6564
STEVEN 76787
【问题讨论】: