Seite 1 von 2

Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 11:58 am
von delonge
Hallo zusammen,
ich habe in meinem Datensatz die Variable "birthmonth" und möchte diese gerne in neue Variablen aufteilen, da ich insgesamt sehr wenig Datenpunkte habe und durch diese Gruppierung vielleicht eine bessere Varianzanalyse bzw. T-test laufen lassen kann:

Entweder Sommer- und Wintermonate oder Quartale 1-4.

Kann mir jemand helfen? Habe noch keine Lösung gefunden :(

Vielen Dank im Voraus!

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 12:52 pm
von jogo
Hallo delonge,

willkommen im Forum!
Eine Lösung kann es erst geben, wenn bekannt ist, wie die Daten aussehen.
Nur der Name der Variable (eventuell die Spalte eines Dataframes?) reicht dafür nicht aus.

Bitte lies: viewtopic.php?f=20&t=11

Gruß, Jörg

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 1:17 pm
von Hufeisen
Ich habe auch schon mal angefangen. Es könnte so gehen.

Code: Alles auswählen

# Beispieldaten erzeugen
meine_daten <- data.frame(Datum = factor(1:12, levels = 1:12, labels = c("jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez")))

# Quartale erzeugen
meine_daten$Quartal[meine_daten$Datum == c("jan", "feb", "mar")] <- "Q1"
meine_daten$Quartal[meine_daten$Datum == c("apr", "mai", "jun")] <- "Q2"
  
  # usw.

# Output
> meine_daten
   Datum Quartal
1    jan      Q1
2    feb      Q1
3    mar      Q1
4    apr      Q2
5    mai      Q2
6    jun      Q2
7    jul    <NA>
8    aug    <NA>
9    sep    <NA>
10   okt    <NA>
11   nov    <NA>
12   dez    <NA>

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 1:47 pm
von delonge
Hallo Jörg,
komme gerade nicht in mein R-Skript, aus dem Internet konnt ich für den Datensatz für die Variable folgendes auswerfen:

$ birthmonth: int 5 10 12 1 2 3 2 6 5 9 ...

Hilft das schon was? :)

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 1:53 pm
von Hufeisen
Der von mir gezeigt Code läuft mit geringen Anpassungen auch für deine Daten. Versuche es am besten mal selbst, das hilft am besten.

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 2:02 pm
von jogo

Code: Alles auswählen

set.seed(42)
Dat <- data.frame(birthmonth=sample(12, 20, rep=TRUE))

Dat$erstesHalbjahr <- Dat$birthmonth < 7
Dat

Dat$Quartal <- cut(Dat$birthmonth, breaks=c(-Inf, 3.5, 6.5, 9.5, Inf), labels = 1:4)
Dat
Gruß, Jörg

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 2:43 pm
von delonge
Danke für die schnellen Tipps - werde es heute Abend ausprobieren!

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Mo Jul 15, 2019 10:36 pm
von delonge
Hallo zusammen,

vielen Dank, das hat super geklappt.
Leider hatte ich einen Denkfehler:
Ich wollte gerne die Variable birthmonth nach Quartalen aufteilen um diese dann erneut mit der Variable length in Beziehung zu setzen.
Die Variable length aus dem ursprünglichen Datensatz ist mir also jetzt verloren gegangen bzw. die habe ich nicht beachtet. Ich habe als Ergebnis jetzt nur eine neuen hübschen Datensatz mit den 12 Monaten Januar-Dezember aufgeteilt nach Q1-Q4 :lol:

Mein ursprünglicher Datensatz besteht aus 34 Beobachtungen und 9 Variablen.
Ich möchte also nun mit 2 Variablen davon eine erneute Varianzanalyse durchfühen. Dafür muss ich die Variable Birthmonth nach Quartalen aufteilen, damit ich mehr Beobachtungen innerhalb einer Gruppe habe.

$ birthmonth: Factor w/ 12 levels "1","2","3","4",..: 5 10 12 1 2 3 2 6 5 9 ...
$ length : num 24.4 25.4 24.5 25.2 25.1 25.7 26.1 23 23.6 22.9 ...

Ist das verständlich und nachvollziehbar?
Hat jemand eine Idee?

Vielen Dank und viele Grüße!

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Di Jul 16, 2019 6:54 am
von jogo
Bitte zeig mal das Ergebnis von

Code: Alles auswählen

as.integer(as.character(Datensatz$birthmonth))
Gruß, Jörg

Re: Variable in 2 neue Variablen aufteilen

Verfasst: Di Jul 16, 2019 7:27 am
von delonge
Hallo Jörg,

> as.integer(as.character(kidsfeet$birthmonth))
[1] 5 10 12 1 2 3 2 6 5 9 9 3 8 3 11 4 12 3 6 3 6 7 9 9 10 7 2 12 11 8 6 7 3 4 4 3 3
[38] 1 9

Viele Grüße