【问题标题】:How to delete rows under a specific condition in R?如何删除R中特定条件下的行?
【发布时间】:2019-06-05 08:06:37
【问题描述】:

我必须从我的 df 中删除与特定条件相关的行。

我有一个简单的 df

sentID   partner  sentence
  A        B        C
  A        B        D
  B        C        E
  B        C        F
  B        A        S

我想删除其中 sentID 和合作伙伴相等且 同时sentID 未与另一个合作伙伴值相关联的那些。 (即,特定的 sentID 不会仅以相同的合作伙伴值出现。) 否则,我必须保留该行。

sentID   partner  sentence
  B        C        E
  B        C        F
  B        A        S

在输出示例中,包含 sentID A 的行已被删除,因为它仅与合作伙伴 B 一起出现。 SentID B 被保留,因为它与合作伙伴 C 和 A 一起出现。

我该怎么办?

感谢您的建议!

【问题讨论】:

  • “未关联”是什么意思?
  • @zx8754 特定的 sentID 不会仅以相同的合作伙伴值出现。在输出示例中,包含 sentID A 的行已被删除,因为它仅与合作伙伴 B 一起出现。 SentID B 被保留,因为它与合作伙伴 C 和 A 一起出现。

标签: r dataframe conditional-statements


【解决方案1】:

这是dplyr 解决方案:

df <- data.frame(sentID = c("A", "A", "B", "B", "B"),
                  partner = c("B", "B", "C", "C", "A"))

df
#>   sentID partner
#> 1      A       B
#> 2      A       B
#> 3      B       C
#> 4      B       C
#> 5      B       A

library(dplyr)

df %>% group_by(sentID) %>% filter(length(unique(partner)) > 1)
#> # A tibble: 3 x 2
#> # Groups:   sentID [1]
#>   sentID partner
#>   <fctr>  <fctr>
#> 1      B       C
#> 2      B       C
#> 3      B       A

reprex package (v0.2.1) 于 2019 年 1 月 10 日创建

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2016-10-19
    • 1970-01-01
    • 2020-09-03
    • 2021-08-17
    • 2022-08-18
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多