2016-04-19 12 views
0

Ich habe folgende DatenPassende mehrere IDs in 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 

I ids passen für 4 Gruppen wollen (A-D) die folgende Tabelle erhalten

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 

Gibt es eine Lösung?

+2

Bitte erläutern Sie dies in Worten – rawr

+0

Fühlen Sie sich frei, hier oder unten meine Antwort zu kommentieren, wenn Sie weitere Erläuterungen benötigen. – Frank

Antwort

2

Ich denke, das ist, was Sie nach:

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 

Das heißt, Ihre Tabelle in seine Bestandteile aufgeteilt und dann verschmelzen.


Wie es funktioniert:rep(1:4, each=2) ausgewertet c(1,1,2,2,3,3,4,4) und dient als Gruppenvariable für die Spalten: das erste Paar von Spalten zusammen gehen, dann das nächste Paar, und so weiter.

+1

Sie könnten auch 'full_join' in' Reduce' verwenden – akrun

Verwandte Themen