Inhaltsverzeichnis
1 Long-Format
Im “long”-Format stehen Messwiederholungen untereinander. Das hat allerdings Nachteile bei der Vergleichbarkeit der Werte über die Probanden hinweg. Viele Analyseprozeduren in R verwenden das long-Format bei Messwiederholungen. Allerdings kann es notwendig sein, vor dem Export in z.B. SPSS oder Excel die Daten ins wide-Format zu transponieren. Für die Umkehrung (wide- zu long-Format) siehe diesen Artikel.
2 Ein Beispieldatensatz
Proband t v
A t0 28
B t0 5
C t0 23
D t0 20
E t0 16
F t0 22
G t0 8
H t0 11
I t0 7
J t0 17
K t0 9
L t0 29
M t0 34
N t0 34
O t0 14
P t0 21
Q t0 21
A t10 42
B t10 10
C t10 26
D t10 30
E t10 24
F t10 28
G t10 12
H t10 15
I t10 9
J t10 23
K t10 24
L t10 39
M t10 56
N t10 51
O t10 24
P t10 28
Q t10 29
A t20 48
B t20 17
C t20 28
D t20 25
E t20 27
F t20 35
G t20 18
H t20 21
I t20 20
J t20 46
K t20 54
L t20 49
M t20 59
N t20 50
O t20 27
P t20 30
Q t20 25
Ein kleines Tutorial zum Importieren von Daten findet ihr hier.
3 Umwandlung mit dem tidyr-Paket
Eine recht rudimentäre und zugleich unkomplizierte Möglichkeit bietet das sog. tidyr-Paket. Dies kann mittels install.packages(“tidyr”) installiert und mit library(tidyr) geladen werden.
install.packages("tidyr")
library(tidyr)
Nun hat man Zugriff auf verschiedene Funktionen, die im Ergebnis alle das Gleiche machen.
3.1 Verwenden der spread()-Funktion
Die einfachste Art und Weise der Umwandlung von long- in wide-Format gelingt mit der spread()-Funktion aus dem tidyr-Paket. Die Funktion trägt die Kennzeichnung “retired” – sie funktioniert problemlos, wird aber nicht länger erweitert und gewartet. Sie ist durch die pivot_wider()-Funktion abgelöst, allerdings finde ich sie persönlich etwas umständlicher als die spread()-Funktion, weshalb ich dieses Vorgehen zeige.
Zunächst wird ein neuer Dataframe definiert. Der heißt in meinem Falle data_wide. Der verwendet die spread()-Funktion und im einfachsten Fall 3 Argumente.
In der Reihenfolge ihrer Verwendung:
- Name des ursprünglichen Dataframes (hier: data_long),
- Name der neuen Zeitpunktvariable (hier: t – die Ausprägungen werden als neue Variablennamen verwendet (t0, t10, t20)),
- Name der neuen Wertvariable (hier: v) und
data_wide <- spread(data_long, t, v)
Das Ergebnis sieht wie folgt aus:
Proband t0 t10 t20
A 28 42 48
B 5 10 17
C 23 26 28
D 20 30 25
E 16 24 27
F 22 28 35
G 8 12 18
H 11 15 21
I 7 9 20
J 17 23 46
K 9 24 54
L 29 39 49
M 34 56 59
N 34 51 50
O 14 24 27
P 21 28 30
Q 21 29 25
3.2 Verwenden der pivot_wider()-Funktion
Die pivot_wider()-Funktion gibt es auch im tidyr-Paket und führt exakt die gleiche Transformation von wide-format zu long-format durch. Ich muss die Datenquelle angeben und zusätzlich welche Variablennamen/Spaltennamen, für die Messwerte und die Zeitpunkt stehen. In der Spalte t stehen immer noch die Zeitpunktbezeichner, weswegen ich die Namen daher bekomme. Die Messwerte stehen in v.
Im Code schreibe ich erneut lediglich eine Zeile:
data_wide_tidy <- pivot_wider(data_long, names_from = t, values_from = v)
Im Ergebnis bekomme ich die Daten im wide-Format, analog zur obigen Umwandlung:
Proband t0 t10 t20
A 28 42 48
B 5 10 17
C 23 26 28
D 20 30 25
E 16 24 27
F 22 28 35
... ... ...