R中主键重复了,多个表格合并后的结果如何?写一个示例:
> d1 <- data.frame(ID=c("a","a","b","b","d","e"),
+ x1=runif(6),
+ x2=runif(6))
> d1
ID x1 x2
1 a 0.48209267 0.95029420
2 a 0.48304094 0.62982656
3 b 0.69623971 0.09673196
4 b 0.06791925 0.18787976
5 d 0.17390752 0.99054750
6 e 0.81937498 0.71887856
>
> d2 <- data.frame(ID=c("b","e","g","q"),
+ x3=runif(4),
+ x4=runif(4))
> d2
ID x3 x4
1 b 0.39280312 0.5555869
2 e 0.01482972 0.3024308
3 g 0.11249520 0.2579582
4 q 0.04065043 0.4562120
>
> d3 <- data.frame(ID=c("a","g","p"),
+ x5=runif(3),
+ x6=runif(3))
> d3
ID x5 x6
1 a 0.30309046 0.1689388
2 g 0.01287808 0.5834867
3 p 0.29827180 0.5252750
> data <- Reduce(function(x,y)full_join(x,y,by="ID"),list(d1,d2,d3))
> data
ID x1 x2 x3 x4 x5 x6
1 a 0.48209267 0.95029420 NA NA 0.30309046 0.1689388
2 a 0.48304094 0.62982656 NA NA 0.30309046 0.1689388
3 b 0.69623971 0.09673196 0.39280312 0.5555869 NA NA
4 b 0.06791925 0.18787976 0.39280312 0.5555869 NA NA
5 d 0.17390752 0.99054750 NA NA NA NA
6 e 0.81937498 0.71887856 0.01482972 0.3024308 NA NA
7 g NA NA 0.11249520 0.2579582 0.01287808 0.5834867
8 q NA NA 0.04065043 0.4562120 NA NA
9 p NA NA NA NA 0.29827180 0.5252750
可以看到,重复的键,合并后的值也是重复的。
网友评论