我正在尝试合并2个数据集。我尝试了不同的功能,但无法获得正确的输出。
一个数据集是另一个(更大)数据集的子集。我想从较大的行中选择较小的行第二列中具有相同值的行。
我想在df2
和SAMPNO
中获得具有相同值的行
更小df1
PERNO
更大的df2
> SAMPN PERNO other.column
> 1 2 10
> 1 3 9
> 2 2 8
> 2 4 7
预期产量
> SAMPN PERNO other.column
> 1 2 10
> 1 2 7
> 1 2 9
> 1 3 7
> 1 3 9
> 1 4 7
> 1 5 5
> 1 6 9
> 2 2 9
> 2 2 8
> 2 4 3
> 2 3 1
> 3 3 0
这是我尝试过的:
> SAMPN PERNO other.column
> 1 2 10
> 1 2 7
> 1 2 9
> 1 3 9
> 1 3 7
> 2 2 8
> 2 2 9
> 2 4 7
> 2 4 3
这些给了我较小数据集的行。 ( WithDriving<-merge( df2,df1, all.y = TRUE)
WithDriving<-merge( df1,df2 , all.x = TRUE)
)是错误的,因为我想从具有相同#rows==#df1
和SAMPN
的较大数据中查找更多行。
我也尝试过
PERNO
这一行给了我较大行的行,但它也给出了 WithDriving<-merge( df1,df2 , all.y = TRUE)
中任何行中不具有相同的SAMPN
和PERNO
的行。
答案 0 :(得分:0)
这可以解决您的问题。
d1 = apply(data[,1:2],1,paste,collapse="-")
d2 = apply(data2[,1:2],1,paste,collapse="-")
data3 = data2[d2%in%d1,]
> data3
SAMPN PERNO other
1 1 2 10
2 1 2 7
3 1 2 9
4 1 3 7
5 1 3 9
9 2 2 9
10 2 2 8
11 2 4 3
我们首先在两个数据帧中粘贴由-
分隔的两列。然后,我们看到d2
中的哪个elemente在d3
中,并将这些行保留在data2
矩阵中。