我有一个非常混乱的数据框(网络抓取),不幸的是其中有许多双重甚至三重条目。大多数数据框如下所示:
> df1<-data.frame(var1=c("a","a","b","b","c","c","d","d"),var2=c("right.a",NA,"right.b",NA,"right.c",NA,"right.d",NA),var3=c("correct.a","correct.a","correct.b","correct.b","correct.c","correct.c","correct.d","correct.d"))
> df1
var1 var2 var3
1 a right.a correct.a
2 a <NA> correct.a
3 b right.b correct.b
4 b <NA> correct.b
5 c right.c correct.c
6 c <NA> correct.c
7 d right.d correct.d
8 d <NA> correct.d
“var1”是我需要用来聚合的 ID 变量。我的目标是拥有一个如下所示的数据框:
var1 var2 var3
1 a right.a correct.a
2 b right.b correct.b
3 c right.c correct.c
4 d right.d correct.d
然而,主要问题是,并不是整个数据框看起来像这样。事实上,我还有其他类似这样的部分:
> df2<-data.frame(var1=c("e","e","e","f","f","g","g","g"),var2=c(NA,NA,"right.e",NA,NA,NA,"right.g",NA),var3=c("correct.e","correct.e",NA,"correct.f",NA,"correct.g","correct.g",NA))
> df2
var1 var2 var3
1 e <NA> correct.e
2 e <NA> correct.e
3 e right.e <NA>
4 f <NA> correct.f
5 f <NA> <NA>
6 g <NA> correct.g
7 g right.g wrong.g
8 g <NA> <NA>
以及其他变化。最后,每个 ID 都应该有一行包含正确且正确的 var2 和 var3。此时,我迷路了:我的 var1 是不独特。但是,我知道“属于”在一起的重复 ID 会分组在数据框中(如我的示例中所示);例如第 4102 行和第 4103 行中可能还有另一个“a”。
我认为正确的方法是使用以 var1 作为 ID 的聚合,但另外告诉 R 这样做时聚合应该只检查 var1 的 +-2 行。有什么想法如何编码吗?
Thanks!