我有2个数据框如下:
DF1:
ID A B C
1 4 7 5
2 3 8 9
3 6 2 7
4 1 8 6
5 3 9 1
6 7 8 3
DF2:
ID D E F
1 6 8 9
2 2 1 1
3 6 1 9
我想删除df1中df2中不存在的行,然后合并2个数据集。
所需的输出将是:
DF3:
ID A B C D E F
1 4 7 5 6 8 9
2 3 8 9 2 1 1
3 6 2 7 6 1 9
我已经尝试了以下所有内容,但没有得到正确的结果:
df1 <- df1[(df1$ID %in% df2$ID),]
df1 <- df1[(df2$ID %in% df1$ID),]
df1 <- semi_join(df1,df2)
df1 <- semi_join(df1,df2, by="ID")
我还尝试了其他“加入”方法,例如“inner_join”和“left_join”。
答案 0 :(得分:1)
这样的事情可行:
## Random datasets
set.seed(1)
df1 <- data.frame(x = 1, y = 2, ID = sample(letters[1:24], 20))
df2 <- data.frame(ID = sample(letters[1:24], 20), a = 1, b = 2)
## Rows in common
rows_in_common <- df1$ID[df1$ID %in% df2$ID]
## Columns to use in df2
df2_cols <- 2:3
## Combine both datasets
df3 <- cbind(df1[match(sort(rows_in_common), df1$ID),],
df2[match(sort(rows_in_common), df2$ID), df2_cols])