通过在R中的其他两个数据集中查找匹配项来创建新数据集
我试图澄清,但如果不够清楚,我表示歉意……我有两个不同长度的数据集。在数据集1中,对于col1=x,col2=y 数据集1=通过在R中的其他两个数据集中查找匹配项来创建新数据集,r,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 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
你能解释一下我怎么做吗?谢谢。使用
合并:
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
dat1我忘了说我的两个数据集的小数位数不相同,例如,我在col1 0.1、0.1等中有小数,在col3 0.1111、0.2222中有小数。您还可以告诉我如何将col1和col3匹配到小数点后1个数字内,即0.1匹配0.1111。非常感谢。非常感谢您的快速回答!关于我的十进制问题,你的解决方案不起作用,可能是因为我没有解释清楚。我通过创建以下函数trunc.dig使用了建议中的解决方案