这是数据:
ID Group test
11 1 test1
11 2 test1
11 2 test2
12 1 test1
12 2 test1
如果一个小组进行了两次测试,我只想保留test2
。
如果一个小组仅进行了一项测试,我将保留该测试。
例如,在这里,我要删除组2中ID为11的test1
。
我尝试了以下代码:
data %>%group_by(ID, Group) %>%filter(test == "test2")
但是它不能很好地工作,因为所有test1
将被删除。
答案 0 :(得分:1)
这是一种可能性:添加一个辅助变量,用于计算组中的测试数量。
(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")
)