我正在尝试整合如下所示的重复数据:
a b c
1 1 1 1
2 2 2 2
3 1 1 NA
4 4 4 4
5 5 5 NA
6 2 2 2
在这种情况下,我想要基于 a 和 b 的所有不同行,如果存在多个行,则删除 c 的那个行NA 。例如,如果我运行以下内容:
distinct(df,a,b,c) %>% group_by(a,b) %>% filter(!is.na(c))
我会得到我需要的东西,除了我丢失第5行。如果该组只包含1行或该组中的所有条目都是NA,那么我将丢失这些记录。我不知道我还能做些什么来避免这个问题。可以使用以下行生成虚拟数据集:
df<-data.frame(a=c(1,2,1,4,5,2),b=c(1,2,1,4,5,2),c=c(1,2,NA,4,NA,2))
答案 0 :(得分:3)
您可以使用&#34;或&#34;向规则!is.na(c)
添加例外。 operator |
:
distinct(df,a,b,c) %>% group_by(a,b) %>% filter( !is.na(c) | n() == 1 )
如果(1)非 - NA
或(2)是唯一的行,那么它就会被保留。