Berechnung und Transformation von Variablen in RStudio

Erfahren Sie, wie Sie in RStudio Variablen umwandeln und neue Variablen erstellen können, um Eingangsvariablen zu kategorisieren und Dummy-Variablen oder Mittelwertindizes zu generieren.

Sebastian | 19.03.2024 | Lesedauer 8 min

In der quantitativen Datenanalyse ist es häufig erforderlich, Variablen für weitere Berechnungen zu transformieren, da sie in ihrem ursprünglichen Zustand möglicherweise nicht für bestimmte Methoden geeignet sind oder einfach umgewandelt werden müssen. Dieser Beitrag bietet einen Überblick über die wesentlichen Aspekte der Variablentransformation in RStudio. Neben Umwandlungen anhand von Rechenoperationen werden auch die Erstellung von Variablenkategorien, die Generierung von Dummy-Variablen, die Umkehrung von Skalenelementen und die Bildung von Indizes behandelt.

 

Datenumwandlung mit Rechenoperationen

Die Gründe für die Transformation einer Variablen sind vielfältig. Daher ist es möglich, Ausgangsvariablen durch verschiedene mathematische Operationen zu verändern, um eine neue Variable zu erzeugen. Als einfaches Beispiel könnte eine Umfrage durchgeführt worden sein, bei der die Befragten lediglich ihr Geburtsjahr angegeben haben. Für weitere statistische Analysen ist jedoch nicht das Geburtsjahr, sondern das Alter der Personen erforderlich. Dies kann durch eine Datentransformation erreicht werden, indem das Geburtsjahr von dem Jahr der Befragung subtrahiert wird.

 

Alter mithilfe des Geburtsjahres berechnen

In der gegebenen Situation sind die Geburtsjahre von 10 Personen bekannt und der entsprechende Datensatz wurde bereits in RStudio importiert. Die Bandbreite der Geburtsjahre erstreckt sich von 1955 bis 2000. Nun soll das Alter dieser Personen berechnet und in einer neuen Variable namens „alter“ gespeichert werden.

Berechnung und Transformation von Variablen in RStudio

Um unsere Vorgehensweisen zu dokumentieren und Befehle auszuführen, erstellen wir zunächst ein neues Skript. Dazu klicken wir auf das kleine „+“-Symbol in der linken oberen Ecke und wählen die Option „R-Skript“ aus. Alternativ können wir auch die Tastenkombination Strg+Shift+N verwenden. Dadurch wird neben dem bereits geöffneten Datensatz ein neuer Tab geöffnet, in den wir unseren Code eingeben können.

Berechnung und Transformation von Variablen in RStudio

Um das Alter der befragten Personen zu erhalten, müssen wir RStudio nun mithilfe des Skripts anweisen, das Geburtsjahr vom aktuellen Jahr zu subtrahieren. Dafür definieren wir zunächst den Namen der neuen Variablen, die als „alter“ innerhalb des geöffneten Datensatzes („Transformation“) gespeichert werden soll (Transformation$alter). Nach <- wird definiert, welche Werte der Variablen zugewiesen werden. In diesem Fall gehen wir davon aus, dass die Umfrage im Jahr 2024 durchgeführt wurde, sodass das Geburtsjahr von 2024 subtrahiert wird (2024 – Transformation$geburtsjahr). RStudio sorgt automatisch dafür, dass eventuell fehlende Angaben innerhalb der Variable „geburtsjahr“ auch in der neuen Variablen als fehlend ausgewiesen werden, da arithmetische Operationen unter Beteiligung von „NA“-Werten („not available“) erneut zu einem „NA“-Wert führen.

Transformation$alter <- 2024 – Transformation$geburtsjahr

Der Befehl wird ausgeführt, indem wir ihn markieren und auf „Run“ klicken (oder die Tastenkombination Strg+Enter). Das Alter der Befragten wurde dem Datensatz nun als neue Variable hinzugefügt.

Berechnung und Transformation von Variablen in RStudio

 

Körpergrösse und Gewicht zur Berechnung des BMI

Mithilfe mathematischer Operatoren können noch viele andere Berechnungen im Zusammenhang mit der Analyse von Umfrageprojekten durchgeführt werden. Angenommen, wir haben eine Umfrage zur Gesundheit durchgeführt, in der unter anderem das Gewicht (in kg) und die Körpergrösse (in cm) der Teilnehmer:innen erfasst wurden. Nun möchten wir mithilfe des Dialogfeldes den BMI (Body-Mass-Index) der Befragten berechnen.

Berechnung und Transformation von Variablen in RStudio

Um den BMI zu berechnen, geben wir nun im Skript die entsprechende Formel ein, die wir zuvor recherchiert haben. Der BMI wird durch das Körpergewicht in Kilogramm geteilt durch das Quadrat der Körpergrösse in Metern berechnet. Wir beginnen jedoch mit der Definition der neuen Variablen, die wir im bestehenden Datensatz als „BMI“ speichern (datensatz$BMI). Im Anschluss wird die Gewichtsvariable datensatz$Gewicht durch die quadrierte Körpergrösse (datensatz$Körpergrösse) dividiert. Da die Körpergrösse in Zentimetern vorliegt, dividieren wir die Variable für die Umrechnung in Meter durch 100. Die Zeichenfolge „^ 2“ steht für die Quadratbildung des Divisors. Nach Markierung der Befehlszeile und der Bestätigung mit „Run“ erhalten wir die neue BMI-Variable.

datensatz$BMI <- datensatz$Gewicht / ((datensatz$Körpergrösse / 100) ^ 2)

Berechnung und Transformation von Variablen in RStudio

Berechnung und Transformation von Variablen in RStudio

 

Variablenausprägungen in neue Kategorien klassifizieren

Es ist gängig, dass man verschiedene Kategorien für metrische oder ordinale Variablen erstellt, um sie in grössere Gruppen zu unterteilen, was bedeutet, dass ursprüngliche Eingangsvariablen kategorisiert werden sollen. Ein typisches Beispiel hierfür ist das Alter von Personen, das oft verschiedenen Altersgruppen zugeordnet wird, wie z. B. jung, mittelalt und älter. In diesem Fall wird jedoch der bereits erstellte BMI als Ausgangsvariable verwendet, um den Personen im Datensatz verschiedene Kategorien von „Untergewicht“ bis „Adipositas“ zuzuweisen. Eine Recherche in der einschlägigen Literatur ergibt, dass die Kategorien wie folgt lauten:

  • BMI < 18,50: Untergewicht
  • BMI >= 18,50 < 25,00: Normalgewicht
  • BMI >= 25 < 30: Übergewicht
  • BMI >= 30: Adipositas

Zunächst wird wieder die neue, kategorisierte BMI-Variable definiert, die wir „BMI_kat“ nennen. Nach <- werden die Bedingungen eingefügt, unter denen „BMI_kat“ die Werte „Untergewicht“, „Normalgewicht“, „Übergewicht“ oder „Adipositas“ annimmt. Im Sinne einer nachvollziehbaren Darstellung werden hier Textwerte verwendet. Möchte man allerdings mit den Werten weiterrechnen, ist eine Zuweisung von numerischen Werten sinnvoll, die die Kategorien repräsentieren (z. B. 1 = Untergewicht, 2 = Normalgewicht usw.).

Mithilfe der ifelse()-Funktion werden nun die Bedingungen definiert, unter denen die neue Variable die jeweiligen Kategorien ausweist. Dabei wird mit der ersten Befehlszeile z. B. abgeglichen, ob der Wert der Variable „BMI“ unter 18,5 liegt. In diesem Fall erhält „BMI_kat“ den Wert „Untergewicht“ (datensatz$BMI < 18.5, „Untergewicht“). Nach diesem Muster wird der gesamte Wertebereich von „BMI“ abgedeckt und in „BMI_kat“ mit Kategorien bis „Adipositas“ versehen. Da das Skript alle Werte < 30 definiert, werden alle sonstigen Werte (>= 30) mit „Adipositas“ klassifiziert.

datensatz$BMI_kat <-
ifelse(datensatz$BMI < 18.5, „Untergewicht“,

ifelse(datensatz$BMI >= 18.5 & datensatz$BMI < 25, „Normalgewicht“,

ifelse(datensatz$BMI >= 25 & datensatz$BMI < 30, „Übergewicht“, „Adipositas“)))

Berechnung und Transformation von Variablen in RStudio

Nachdem der Befehl markiert und mit „Run“ ausgeführt wurde, ist dem Datensatz im Ergebnis die kategorisierte Variable „BMI_kat“ hinzugefügt. Demnach werden alle Personen drei verschiedenen BMI-Kategorien von „Normalgewicht“ bis „Adipositas“ zugewiesen. Keine der Personen ist laut BMI-Definition untergewichtig.

Berechnung und Transformation von Variablen in RStudio

 

Erstellung von Dummy-Variablen

Ein besonderer Fall der Umwandlung einer Variablen in Kategorien ist die Erstellung einer Dummy-Variable, die oft aus den Werten einer nominalen Variablen hervorgeht. Hierbei entsteht für jede Ausprägung der ursprünglichen Variable eine neue, die lediglich zwei Kategorien mit den Werten 0 („nein“, „nicht vorhanden“) und 1 („ja“, „vorhanden“) aufweist.

Solch eine dichotom skalierte Variable wird häufig für bestimmte Analysemethoden benötigt. Beispielsweise könnten wir die Dummy-Variablen als unabhängige Variablen in einem Regressionsmodell verwenden wollen, für das eine nominal skalierte Prädiktorvariable ungeeignet ist. Ebenso ist für die binär-logistische Regression eine dichotom skalierte abhängige Variable erforderlich.

 

Erstellung von Dummy-Variablen anhand des Familienstands

Nehmen wir an, dass wir den Familienstand von zehn Personen erhoben haben. Diese haben angegeben, ob sie „ledig“, „verheiratet“, „geschieden“ oder „verwitwet“ sind. In diesem Fall liegen die Ausprägungen in Textform (in RStudio: character) vor. Das Vorgehen bei numerischen Ausprägungen gestaltet sich jedoch analog. Der entsprechende Datensatz („Familienstand“) wurde in RStudio importiert. Für jede dieser Ausprägungen wird im Folgenden ein Dummy erstellt, der angibt, ob die Ausprägung vorhanden (1) ist oder nicht (0).

Berechnung und Transformation von Variablen in RStudio

Um den Befehl einzugeben, erstellen wir erneut ein Skript. Auch die Erstellung von Dummy-Variablen kann über die Funktion ifelse() erfolgen. In diese Funktion gibt man nach dem Muster Wenn-Dann-Sonst ein, unter welchen Bedingungen die jeweiligen Dummy-Variablen den Wert 1 (oder 0) annehmen sollen. Jede Zeile beginnt mit der Definition der neuen Variablen. In der ersten Zeile wird der Dummy für den Familienstand „ledig“ erstellt (datensatz$ledig_dummy). Nach dem <- folgt die ifelse()-Funktion. Dort veranlassen wir das Programm zur Prüfung der Bedingung, ob die Variable „Familienstand“ = „ledig“ ist. Wenn das der Fall ist, wird der neuen Variable der Wert 1 zugewiesen. Trifft das nicht zu, erhält sie den Wert 0.

datensatz$ledig_dummy <- ifelse(datensatz$Familienstand == „ledig“, 1, 0)
datensatz$verheiratet_dummy <- ifelse(datensatz$Familienstand == „verheiratet“, 1, 0)
datensatz$geschieden_dummy <- ifelse(datensatz$Familienstand == „geschieden“, 1, 0)
datensatz$verwitwet_dummy <- ifelse(datensatz$Familienstand == „verwitwet“, 1, 0)

Berechnung und Transformation von Variablen in RStudio

Nach Eingabe des Befehls wird dieser markiert und mit „Run“ ausgeführt. Der Datensatz enthält nun die gewünschten 4 Dummy-Variablen. Für jede Person im Datensatz nimmt schliesslich nur eine der vier Dummy-Variablen den Wert 1 an, die übrigen den Wert 0. Die Variablen können nun für weitere Analysen verwendet werden. Beispielsweise könnten wir, wenn weitere Variablen vorhanden wären, mithilfe eines linearen Regressionsmodells den Einfluss einer Ehe auf eine abhängige Variable untersuchen.

Berechnung und Transformation von Variablen in RStudio

 

Ausprägungen inverser Items umkehren

Hin und wieder kommt es vor, dass die Ausprägungen von Variablen mit inversen (umgekehrten) Antwortausprägungen umcodiert werden müssen. Folgendes Beispiel verdeutlicht das: Für eine Seminararbeit verwendet man den Sekundärdatensatz einer grossen Bevölkerungsumfrage. Dabei wurde auch der Gesundheitszustand der befragten Personen erfasst. Die ordinalskalierte Variable hat folgende Ausprägungen:

  • Sehr gut (1)
  • Gut (2)
  • Mittelmässig (3)
  • Schlecht (4)
  • Sehr schlecht (5)

Wenn die Variable in späteren Analysen in dieser Form verwendet wird, kann dies zu Verwirrung führen. Der Grund dafür liegt in der kontraintuitiven Codierung der Antwortkategorien, die höhere Werte für schlechtere Gesundheitszustände vergibt. Eine intuitivere Interpretation wäre es, schlechten Gesundheitszuständen niedrige und guten Gesundheitszuständen hohe Werte zuzuordnen. Daher soll die Variable für weitere Analysen umcodiert werden. Hierfür importieren wir den Datensatz mit den Angaben zum Gesundheitszustand zunächst in RStudio.

Berechnung und Transformation von Variablen in RStudio

Um den Befehl für die Invertierung der Antwortausprägungen zu schreiben, öffnen wir wieder ein neues Skript. Die Invertierung erfolgt nun simpel, indem die Antwortausprägung von 6 (Anzahl der Antwortausprägungen +1) subtrahiert wird. Zunächst legen wir dafür die eine neue Variable (datensatz$gesundheitszustand_invertiert) an. Dieser Variablen wird nun die Differenz aus 6 und der ursprünglichen Antwortausprägung zugewiesen. Die Rechenoperation führt dazu, dass die Antwortausprägungen gespiegelt werden.

datensatz$gesundheitszustand_invertiert <- 6 – datensatz$gesundheitszustand

Berechnung und Transformation von Variablen in RStudio

Die neue Variable „gesundheitszustand_“ enthält nun eine intuitiv nachvollziehbare Reihenfolge der Antwortausprägungen. Bei den folgenden Analysen muss nur noch darauf geachtet werden, diese Variable anstelle der ursprünglichen zu verwenden. Die Interpretation von Regressionsmodellen unter Beteiligung der Variable fällt nun deutlich leichter:

  • Sehr gut (5)
  • Gut (4)
  • Mittelmässig (3)
  • Schlecht (2)
  • Sehr schlecht (1)

Berechnung und Transformation von Variablen in RStudio

 

Berechnung von Mittelwerten und Summenindizes

In einem anderen Artikel wurden die Gründe und grundlegenden Schritte für die Erstellung verschiedener Indizes erläutert. Ein solcher Grund könnte beispielsweise vorliegen, wenn wir ein Messinstrument verwenden, das aus mehreren Einzelitems besteht. Als Beispiel nehmen wir drei solcher Items, die jeweils Skalen von „trifft überhaupt nicht zu“ (1) bis „trifft voll und ganz zu“ (5) haben können. Die Methode des Instruments sieht vor, dass die Werte der Einzelteile zu einem Mittelwertindex zusammengefasst werden. (Manchmal ist vorher auch die Invertierung einzelner Items nötig. In diesem Fall sind zunächst die Berechnungen im Kapitel „Ausprägungen inverser Items umkehren“ durchzuführen.) Ein Beispieldatensatz mit drei solcher Items wird zunächst in RStudio importiert.

Berechnung und Transformation von Variablen in RStudio

Um nun einen Mittelwertindex zu erstellen, wird ein neues Skript geöffnet und im ersten Schritt die neue Zielvariable definiert, die „mittelwert_index“ (datensatz$mittelwert_index) genannt wird. Der Mittelwert wird dieser neuen Variablen nun über die Funktion rowMeans() zugewiesen. Innerhalb der Funktion wird zunächst der Datensatz ausgewählt und im Anschluss die drei Items, die aggregiert werden sollen. Der Befehl „na.rm = TRUE“ sorgt dafür, dass fehlende Werte ignoriert werden, wenn der Mittelwert berechnet wird. Ist gewünscht, dass ein fehlender Wert in mindestens einer der drei Ausgangsvariablen zu einem fehlenden Indexwert führt, ist hier „na.rm = FALSE“ einzutragen.

datensatz$mittelwert_index <- rowMeans(datensatz[, c(„item1“, „item2“, „item3“)], na.rm = TRUE)

Berechnung und Transformation von Variablen in RStudio

Im Ergebnis wird der neue Mittelwertindex nach Auswahl des Skripts und „Run“ dem Datensatz hinzugefügt. Nach dem gleichen Muster kann mithilfe der Funktion rowSums() ein additiver Index bzw. ein Summenindex berechnet werden.

Berechnung und Transformation von Variablen in RStudio

 

Weiterführende Literatur:

Fahrmeir, L., Heumann, C., Künstler, R., Pigeot, I., Tutz, G. (2016). Einführung in R. Berlin, Heidelberg: Springer.

Hedderich, J., Sachs, L. (2020). Angewandte Statistik. Berlin, Heidelberg: Springer.