我试图说清楚,但是如果不够清楚就道歉......我有两个不同长度的数据集。在数据集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
请问您能解释我怎么做?谢谢。
答案 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}}。