【问题标题】:How to filter data in R?如何过滤R中的数据?
【发布时间】:2015-08-02 14:33:30
【问题描述】:

我拥有庞大的数据集,其中包含数百万行并具有一些特殊属性。我需要过滤保留其其他属性的数据。

我的数据如下:

      ID   Prop1   Prop2   TotalProp
56891940     G02     G02           2
56892558     A61     G02           4
56892558     A61     A61           4
56892558     G02     A61           4
56892558     A61     A61           4
56892552     B61     B61           3
56892552     B61     B61           3
56892552     B61     A61           3
56892559     B61     G61           3
56892559     B61     B61           3
56892559     B61     B61           3 and so on more than million rows

我想要的是,如果所有 ID 为 56891940 和 56892559 且“prop1”和“prop2”相同但不是 56892558 和 56892559 的行,我需要删除行,因为有些行相同但至少其中一个属性不同所以我想保留 56892558,56892552 和 56892559 等的所有值。

我的最终输出应该是这样的:

      ID   Prop1   Prop2   TotalProp
56892558     A61     G02           4
56892558     A61     A61           4
56892558     G02     A61           4
56892558     A61     A61           4
56892552     B61     B61           3
56892552     B61     B61           3
56892552     B61     A61           3    
56892559     B61     G61           3
56892559     B61     C61           3
56892559     B61     B61           3

【问题讨论】:

  • 编写或编辑问题时,可以使用一种很好的代码或数据布局方式,如下所述:stackoverflow.com/help/formatting
  • 请查看更新后的解决方案
  • 非常感谢您,非常感谢您的及时和出色的回复!干杯!
  • @SudasAcharya 没问题

标签: r filter social-networking graph-theory


【解决方案1】:

你可以试试

library(data.table)
setDT(df1)[, .SD[any(Prop1!=Prop2)], ID]
#          ID Prop1 Prop2 TotalProp
# 1: 56892558   A61   G02         4
# 2: 56892558   A61   A61         4
# 3: 56892558   G02   A61         4
# 4: 56892558   A61   A61         4
# 5: 56892552   B61   B61         3
# 6: 56892552   B61   B61         3
# 7: 56892552   B61   A61         3
# 8: 56892559   B61   G61         3
# 9: 56892559   B61   B61         3
#10: 56892559   B61   B61         3

或者按照@Frank 的建议

setDT(df1)[, if(any(Prop1!=Prop2)) .SD, ID]

使用dplyr的类似选项

library(dplyr)
df1 %>%
    group_by(ID) %>%
    filter(any(Prop1!=Prop2))

或者使用来自base Rave

df1[with(df1, ave(Prop1!=Prop2, ID, FUN=any)),]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 2018-01-07
    • 2010-10-03
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2021-08-18
    相关资源
    最近更新 更多