如何在R中根据特定条件删除行?

3

我需要根据特定条件从数据框中删除行。

我有一个简单的数据框。

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

我希望删除那些sentID和partner相等,并且同时sentID没有与另一个partner值相关联的行。(即,特定的sentID不仅出现在同一partner值中。) 否则,我必须保留该行。

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

在输出示例中,包含sentID A的行被删除,因为它只与partner B一起出现。SentID B被保留,因为它与partner C和A一起出现。
我该怎么做?
感谢您的建议!

“not associated” 是什么意思? - zx8754
@zx8754 特定的sentID并不仅与相同的partner值一起出现。在输出示例中,包含sentID A的行被删除,因为它仅与partner B一起出现。SentID B被保留,因为它与partner C和A一起出现。 - Silvia
1个回答

2
这是一个 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

2019年01月10日由reprex package(v0.2.1)创建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接