Как удалить строки при определенных условиях в R? - PullRequest
0 голосов
/ 10 января 2019

Я должен удалить строки из моего df относительно определенного условия.

У меня есть простой DF

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

и я хочу удалить те, в которых sentID & partner равны, а в то же время sentID не связан с другим значением партнера. (т.е. конкретный sentID не отображается с тем же значением партнера). В противном случае я должен сохранить ряд.

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

В выходном примере строки, содержащие sentID A, были удалены, поскольку он отображается только с партнером B. SentID B был сохранен, потому что он появляется с партнером C и A.

Как я мог это сделать?

спасибо за ваши предложения!

1 Ответ

0 голосов
/ 10 января 2019

Вот решение 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 пакетом Представить (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...