Как удалить значение из группы с помощью фильтра? - PullRequest
0 голосов
/ 08 января 2019

Это данные:

ID  Group   test
11  1   test1
11  2   test1
11  2   test2
12  1   test1
12  2   test1

Если группа провела два теста, я хочу оставить только test2. Если группа провела только один тест, я сохраню этот тест.

Например, здесь я хочу удалить test1 в группе 2 для идентификатора 11.

Я попробовал следующий код:

data %>%group_by(ID, Group) %>%filter(test == "test2")

Но это не сработало, потому что все test1 будут удалены.

1 Ответ

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

Вот одна возможность: добавить вспомогательную переменную, которая подсчитывает количество тестов в группе.

(data 
      %>% group_by(ID, Group) 
      %>% mutate(n=n()) 
      %>% filter(n==1 | test=="test2")
)

(впоследствии вы можете select(-n), если хотите избавиться от этой переменной).

На самом деле (после дальнейших экспериментов) похоже, что вы можете использовать n() на лету:

(data 
     %>% group_by(ID, Group) 
     %>% filter(n()==1 | test=="test2")
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...