2016-04-26 11 views
1

, wie ich einen Datenrahmen wie dieses:Komplexe Umstrukturierung der R Datenrahmen

participant v1 v2 v3 v4 v5 v6 
1   4 2  9 7 2 
2    6 8  1 
3    5 4  5 
4   1 1  2 3 

Alle zwei aufeinander folgenden Variablen (v1 und v2, v3 und v4, v5 und v6) gehören zueinander (das ist, was ich "Zählen" später).

ich folgendes desperatly einen Weg suchen, um zu erhalten:

participant count v(odd numbers) v(even numbers) 
1   1  4    2 
      2      9 
      3  7    2 
2   1      6 
      2  8 
      3      1 
3   1 
      2  5    4 
      3      5 
4   1  1    1 
      2      2 
      3  3    

Da dies meine erste Frage auf Stackoverflow immer, ich hoffe, dass Sie meine Bitte verstehen. Ich suchte viel nach ähnlichen Problemen (und Lösungen zu ihnen), fand aber nichts. Ich würde Ihre Unterstützung sehr schätzen.

+0

verwenden, was meinst du mit ‚zueinander gehören‘? Was hast du bisher versucht? Kannst du den Code teilen? Sie können 'dput()' in Ihrem Datenrahmen verwenden, um dieses Beispiel einfacher zu reproduzieren. – epo3

Antwort

0

Wir melt

library(data.table) 
melt(setDT(d1), measure = list(paste0("v", seq(1, 6, by= 2)), 
      paste0("v", seq(2,6, by = 2))))[order(participant)] 
# participant variable value1 value2 
# 1:   1  1  4  2 
# 2:   1  2  NA  9 
# 3:   1  3  7  2 
# 4:   2  1  NA  6 
# 5:   2  2  8  NA 
# 6:   2  3  NA  1 
# 7:   3  1  NA  NA 
# 8:   3  2  5  4 
# 9:   3  3  NA  5 
#10:   4  1  1  1 
#11:   4  2  NA  2 
#12:   4  3  3  NA 
+0

Vielen Dank, @akrun, für Ihre schnelle Antwort. Ich nahm an, dass 'schmelzen' die Lösung wäre, hatte aber keine Ahnung von den zusätzlichen Argumenten, die du benutzt hast. Sieht genau so aus, wie ich es verlangt habe. Leider, wenn ich dies auf meinen Datenrahmen anwende, erhalte ich einen Fehler: 'Unbekannte 'measure.var' Typ Liste, muss ein Zeichen oder Integer-Vektor sein.' Hier ist meine Zeile: 'schmelzen (setDT (sub.cr), measure = list (paste0 ("valence", seq (1, 400, by = 2)), paste0 ("erregung", seq (2400, by = 2)))) [order (lfdn)] 'Was ist mein Fehler? – scylyne

+0

@scylyne Sie können Ihren Post mit dem dput eines kleinen Datasets aktualisieren, das den Fehler anzeigt – akrun