我有以下数据
id1 A id2 B id3 C id4 D
1 12 1 10 2 13 1 12
4 11 3 9 4 14 4 13
3 13 4 4 1 15 3 8
7 13 2 11 3 16 2 14
2 14 6 12 7 16 6 11
我想匹配4组(A-D)的ID以获得下表
id1.1 A1 id2.2 B2 id3.3 C3 id4.4 D4
1 12 1 10 1 15 1 12
2 14 2 11 2 13 2 14
3 13 3 9 3 16 3 8
4 11 4 4 4 14 4 13
7 13 NA NA 7 16 NA NA
有没有解决方案?
答案 0 :(得分:2)
我认为这就是你所追求的:
DFList = split.default(DF, rep(1:4, each=2))
Reduce(function(x,y) merge(x, y, by = 1, all = TRUE), DFList)
id A B C D
1 1 12 10 15 12
2 2 14 11 13 14
3 3 13 9 16 8
4 4 11 4 14 13
5 6 NA 12 NA 11
6 7 13 NA 16 NA
也就是说,将表拆分为其组成部分,然后合并它们。
工作原理: rep(1:4, each=2)
评估为c(1,1,2,2,3,3,4,4)
并作为列的分组变量:第一对列合在一起,然后是下一对,以及等等。