我必须从df中删除与特定条件有关的行。
我有一个简单的df
sentID partner sentence
A B C
A B D
B C E
B C F
B A S
并且我想删除sendID和合作伙伴相等且同时sendID未与另一个合作伙伴值关联的对象。 (即,特定的sendID不会仅显示具有相同的合作伙伴值。)
否则,我必须保留该行。
sentID partner sentence
B C E
B C F
B A S
在输出示例中,包含sendID A的行被删除,因为它仅与伙伴B一起出现。 SentID B被保留,因为它与伙伴C和A一起出现。
我该怎么办?
谢谢您的建议!
最佳答案
这是一个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-01-10创建