删除两个数据框中不匹配的ID

时间:2017-09-29 09:34:17

标签: r dataframe

我有两个数据框。我需要删除彼此不匹配的ID。例如,我需要删除a中的id 4,7,10的数据和b中的id 5,12,15。我需要从两个数据框中删除数据。

一个:

    id   name
1    1    A
2    2    B
3    4    D
4    7    G
5    8    H
6    9    I
7    10   J
8    13   M

B:

    rating  id   name
1     3      1    A
2     4      2    B
3     4      5    E
4     5      8    H
5     2      9    I
6     1      12   L
7     3      13   M
8     4      15   O

更新

c:
        rating  id   name
    1     4      2    B
    2     2      9    I
    3     3      13   M

另一个问题,如果所有C的数据都匹配B,并且我想删除B中的C数据,那么B将只有id 1,5,8,12,15。

2 个答案:

答案 0 :(得分:1)

我们需要inner_join

library(dplyr)
inner_join(a, b['id'], by = 'id')

答案 1 :(得分:0)

df1 <- read.table(text = "id   name
1    1    A
2    2    B
3    4    D
4    7    G
5    8    H
6    9    I
7    10   J
8    13   M", header = T)

df2 <- read.table(text = "id   name
1    1    A
2    2    B
3    5    E
4    8    H
5    9    I
6    12   L
7    13   M
8    15   O", header = T)

ids <- merge(x = df1, y = df2, by = "id", all = F )$id

df1 <- df1[df1$id %in% ids,]
df2 <- df2[df2$id %in% ids,]