【问题标题】:How to remove rows with same id in different data frames? [duplicate]如何删除不同数据框中具有相同 id 的行? [复制]
【发布时间】:2022-02-06 08:03:14
【问题描述】:
df1 
   id value
1  1    10
2  2    20
3  3    30
4  4    40
5  5    50

df2
   id value
1  2    25
2  3    35

I would like to have the following df3:

df3 
   id value
1  1    10
2  4    40
3  5    50

换句话说,我只想删除 df1 和 df2 之间的相同 ID。我怎么能这样做?

【问题讨论】:

  • 还有 - dplyr::anti_join(df1, df2, by = 'id')

标签: r dataframe


【解决方案1】:

你可以使用

df1[!df1$id %in% df2$id, ]
#>   id value
#> 1  1    10
#> 4  4    40
#> 5  5    50

问题的可重复数据

df1 <- data.frame(id = 1:5, value = 10 * (1:5))
df2 <- data.frame(id = 2:3, value = c(25, 35))

【讨论】:

  • 嗨,那里。整洁的解决方案。虽然我相信我们的不同之处在于你不会从df2 返回行,如果整个df2 不是df1 的子集只需向读者指出这一点,但是,我承认情况并非如此OP的数据
【解决方案2】:

我创建了新的虚拟数据来简化示例。随意申请其他数据框

# dummy df
df <- data.table(id = 1:2); df
   id
1:  1
2:  2

# dummy df1
df1 <- data.table(id = 2:3); df1
   id
1:  2
2:  3

# common rows
x <- intersect(unique(df$id), unique(df1$id))

# exclude
rbind(df, df1)[!id %in% x]
   id
1:  1
2:  3

【讨论】:

    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    相关资源
    最近更新 更多