如何合并2个数据集?

时间:2019-09-16 15:04:49

标签: r dataframe

我正在尝试合并2个数据集。我尝试了不同的功能,但无法获得正确的输出。

一个数据集是另一个(更大)数据集的子集。我想从较大的行中选择较小的行第二列中具有相同值的行。

我想在df2SAMPNO中获得具有相同值的行

更小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==#df1SAMPN的较大数据中查找更多行。

我也尝试过

PERNO

这一行给了我较大行的行,但它也给出了 WithDriving<-merge( df1,df2 , all.y = TRUE) 中任何行中不具有相同的SAMPNPERNO的行。

1 个答案:

答案 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矩阵中。