合并R中的“重复”行

时间:2015-09-18 21:00:09

标签: r duplicates dplyr

我正在尝试整合如下所示的重复数据:

  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))

1 个答案:

答案 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)是唯一的行,那么它就会被保留。