【问题标题】:R: excluding rows with a preset list of values in a data frameR:排除数据框中具有预设值列表的行
【发布时间】:2013-11-06 17:16:07
【问题描述】:

我有一个非常大但与此非常相似的数据框:

df <- data.frame(Group = rep(c('A', 'B', 'C', 'D'), 50),
                 Number = sample(1:100, 200, replace = T))

Group   Number
A   52
B   74
C   22
D   90
A   7
B   93
C   50
D   10
A   31
B   19

我有另一个名为“remove”的数据框,如下所示:

>remove
 Group  Number
    A   52
    C   22
    B   93
    D   10

如何对 df 数据进行子集化,以便排除“删除”中具有 Group 和 Number 值的所有行以获取以下数据框?该文件非常大,因此我无法手动输入要排除的值。 期望的输出:

Group   Number
B   74
D   90
A   7
C   50
A   31
B   19

谢谢!

【问题讨论】:

    标签: r dataframe extract subset rows


    【解决方案1】:

    你可以用%in%做到这一点

    df <- df[!(df$Number %in% remove$Number),]
    

    如果df$Number 在向量remove 中,%in% 将返回TRUE。因为我们想要补码,所以我们先用! 否定集合。

    【讨论】:

    • 谢谢,但如果我的“删除”数据集也有一个组列怎么办。如何根据 Group 和 Number 设置“remove”中的 Group 和 Number 值从 df 中排除?
    • 我编辑了代码以反映这一点。您只需要查看来自remove 的列以及要删除的值。
    【解决方案2】:

    对于更复杂的排除,您可以在两个数据框中创建一个唯一列(即 Group+Number),并按照 Christopher 描述的方法尝试排除它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多