Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在2个数据帧中匹配2列_R - Fatal编程技术网

R 在2个数据帧中匹配2列

R 在2个数据帧中匹配2列,r,R,我有两个数据帧: frame1 First_Name Last_Name John Smith Jane Doe John Doe frame2 First_Name Last_Name John Smith Sally Smith Jane Doe 我只想提取First_Name和Last_Name列匹配的行: output: First_Name Last_Name

我有两个数据帧:

frame1

First_Name  Last_Name 
John         Smith
Jane         Doe 
John         Doe

frame2

First_Name   Last_Name
John          Smith
Sally         Smith
Jane          Doe

我只想提取First_Name和Last_Name列匹配的行:

output:

First_Name    Last_Name
John            Smith
Jane            Doe

谢谢大家!

我们可以从
dplyr

library(dplyr)
intersect(frame1, frame2)
#   First_Name Last_Name
#1       John     Smith
#2       Jane       Doe
内部连接

inner_join(frame1, frame2)

或者使用
data.table中的
fintersect

library(data.table)
fintersect(setDT(frame1), setDT(frame2))

或者在
base R
中使用
merge

merge(frame1, frame2)
数据
frame1您还可以使用
Reduce
尝试
base R
解决方案。代码如下:

数据:

或者只是
merge()

输出:

  First_Name Last_Name
1       John     Smith
2       Jane       Doe
  First_Name Last_Name
1       John     Smith
2       Jane       Doe
#Code
df <- Reduce(function(x,y) merge(x,y,sort=F),x = list(frame1,frame2))
  First_Name Last_Name
1       John     Smith
2       Jane       Doe
#Code2
merge(frame1,frame2,sort=F)
  First_Name Last_Name
1       John     Smith
2       Jane       Doe