通过在R中的其他2个数据集中查找匹配来创建新数据集

时间:2011-06-29 15:32:48

标签: r

我试图说清楚,但是如果不够清楚就道歉......我有两个不同长度的数据集。在数据集1中,对于col1 = x,col2 = y

数据集1 =

col1  col2
0.1   0.21
0.1   0.22
0.2   0.4
0.34  0.3
0.4   0.36

同样,在数据集2中,对于col3 = x,col4 = y

col3  col4
0.1   0.2
0.2   0.3
0.3   0.4
0.4   0.5
0.5   0.6
0.6   0.7
0.7   0.8

col1和col3中的某些值匹配,所以我想创建一个新的数据集,其中写入col1中找到的所有值(col3中找到的所有值但不忽略col1)但是带有“匹配”数字在col4中这样

new_col1 new_col4
0.1      0.2
0.1      0.2
0.2      0.3
0.34     NA
0.3      0.4

请问您能解释我怎么做?谢谢。

1 个答案:

答案 0 :(得分:2)

使用merge

dat1 <- data.frame(col1=c(0.1,0.1,0.2,0.34,0.4),col2=c(0.21,0.22,0.4,0.3,0.36))
dat2 <- data.frame(col3=(1:7)/10,col4=(2:8)/10)

> merge(dat1, dat2, by.x="col1", by.y="col3", all.x=TRUE)[-2]
  col1 col4
1 0.10  0.2
2 0.10  0.2
3 0.20  0.3
4 0.34   NA
5 0.40  0.5

by参数指定要匹配的列,all.x=TRUE告诉它使用所有第一个数据帧,最后的子集[-2]是从col2中移除dat2$col3 <- trunc(dat2$col3*10)/10输出。

编辑:

要满足您的额外要求,请在合并前使用{{1}}。