Seite 1 von 2

Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 3:31 pm
von Schnepp
Hallo,

mein Problem ist folgendes:
Ich habe eine Variable "Alter", welche ein Faktor mit 46 Leveln ist und das Alter von Personen beinhaltet.
Ich möchte diese Variable in "Gruppen" aufteilen, damit ich mir im nachhinein die absoluten und prozentualen Anteile jeder Gruppe anzeigen lassen kann. Daran scheitere ich bereits mit der Fehlermeldung "In Ops.factor(Alter, 22) : ‘<’ not meaningful for factors"

So sieht das momentan aus:

agegroup <-factor(levels=c("bis 21","22-23","24-25","26-27","28-29","30-39","40und+"),ordered=T)

agegroup[Alter<22]<-"bis 21"
agegroup[Alter>21&Alter<24]<-"22-23"
agegroup[Alter>23&Alter<26]<-"24-25"
agegroup[Alter>25&Alter<28]<-"26-27"
agegroup[Alter>27&Alter<30]<-"28-29"
agegroup[Alter>29&Alter<40]<-"30-39"
agegroup[Alter>39]<-"40und+"

describe(agegroup) #absolut, %, N, Miss

Die describe Funktion aus dem psych Paket hilft mir dabei nicht weiter, weil agegroup ja letztendlich ein Faktor ist...

Ich hoffe ich habe das Problem vernünftig geschildert, ist mein erster Post hier.

Danke fürs Lesen :)

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 3:42 pm
von bigben
Hallo Schnepp,

Du schreibst, Alter sei ein Factor, Du machst aber Vergleiche, als ob es Zahlenwerte seien. Was sagt denn

Code: Alles auswählen

str(Alter)
? Wenn es nur ums Zählen geht kannst Du auch mit

Code: Alles auswählen

table(Alter)
Alter selbst auszählen und die Gruppengrößen durch addieren gewinnen.

LG, Bernhard

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 3:52 pm
von Schnepp
Danke für die schnelle Antwort :)

str(Alter) gibt mir "Factor w/ 46 levels"

Mit dem table Befehl könnte ich mir alles von Hand zusammenrechnen, ich hatte nur gehofft eine elegantere Lösung zu finden, bei welcher mir die Anzahl der entsprechend Alten Menschen schon in Gruppen zusammengezählt wird.

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:00 pm
von bigben
Das ist ganz bestimmt eine Verkürzung der Ausgabe von str, macht aber schon mal klar, dass Ausdrücke der Art " Alter<21" falsch sind. Bei ungeordneten Faktoren macht "kleiner" keinen Sinn!

Was sagt

Code: Alles auswählen

levels(Alter)
?

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:04 pm
von Schnepp
levels(Alter) gibt mir in Reihenfolge Zahlen von 17 bis 65, ab und zu fehlt eine, weil keiner dieses Alter angegeben hat

EDIT: hab mich verguckt, es fehlt keine, falls das wichtig ist...

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:23 pm
von bigben
Ich habe kein gutes Gefühl, wenn Du statt Output Deine Interpretation des Outputs wiedergibst, aber das musst Du wissen. Was sagt

Code: Alles auswählen

A.num <- as.numeric(as.character(Alter))
summary(A.num)
?

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:27 pm
von Schnepp
Verzeihung, das war nicht meine Absicht

Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
17.00 21.00 22.00 23.75 25.00 65.00 72

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:35 pm
von bigben
Cool, dann hast Du mit A.num jetzt die Alterswerte als Zahlen vorliegen. Die erlauben jetzt alle Rechenoperationen und können sinnvoll mit Zahlen verglichen werden. Deshalb lassen die sich auch besser gruppieren.
Such mal nach der Funktion cut und melde Dich dann, ob Du damit klar kommst.

LG, Bernhard

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 4:59 pm
von Schnepp
Danke erstmal, das hilft mir echt super weiter!

agegroup <-factor(levels=c("bis 21","22-23","24-25","26-27","28-29","30-39","40und+"),ordered=T)

agegroup[A.num<22]<-"bis 21"
agegroup[A.num>21&A.num<24]<-"22-23"
agegroup[A.num>23&A.num<26]<-"24-25"
agegroup[A.num>25&A.num<28]<-"26-27"
agegroup[A.num>27&A.num<30]<-"28-29"
agegroup[A.num>29&A.num<40]<-"30-39"
agegroup[A.num>39]<-"40und+"

table(agegroup)

dadurch bekomme ich jetzt

agegroup
bis 21 22-23 24-25 26-27 28-29 30-39 40und+
1807 1101 559 321 224 365 103

EDIT: Das cutten hat also geklappt. Bekomme ich das jetzt noch so hin, dass ich agegroup irgendwie mit der discribe funktion verwenden kann oder hast du da eine andere Idee? Ansonsten hast du mein Problem damit gelöst, dankeschön!

Re: Altersgruppen bilden und deskriptive Kennwerte

Verfasst: So Apr 12, 2020 5:02 pm
von bigben
Schön, dass es jetzt läuft. cut würde den Code kürzer machen, aber Hauptsache es klappt.

Für Deine nächste Frage: viewtopic.php?f=20&t=29

LG Bernhard