匹配R中的多个ID

时间:2016-04-19 15:35:41

标签: r

我有以下数据

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

有没有解决方案?

1 个答案:

答案 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)并作为列的分组变量:第一对列合在一起,然后是下一对,以及等等。