Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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中的其他两个数据集中查找匹配项来创建新数据集_R - Fatal编程技术网

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

通过在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中的一些值

我试图澄清,但如果不够清楚,我表示歉意……我有两个不同长度的数据集。在数据集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

你能解释一下我怎么做吗?谢谢。

使用
合并

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使用了建议中的解决方案