Altersgruppen bilden und deskriptive Kennwerte

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Schnepp
Beiträge: 6
Registriert: So Apr 12, 2020 3:21 pm

Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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 :)
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Schnepp
Beiträge: 6
Registriert: So Apr 12, 2020 3:21 pm

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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)
?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Schnepp
Beiträge: 6
Registriert: So Apr 12, 2020 3:21 pm

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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...
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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)
?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Schnepp
Beiträge: 6
Registriert: So Apr 12, 2020 3:21 pm

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Schnepp
Beiträge: 6
Registriert: So Apr 12, 2020 3:21 pm

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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!
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Altersgruppen bilden und deskriptive Kennwerte

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten