Seite 1 von 1

BMI Werte in Gewichtsklassen einteilen

Verfasst: Fr Mär 09, 2018 1:44 pm
von JRzumMaster
Hallo ihr Lieben,

folgendes: Ich habe einen Datensatz in dem eine Variable der BMI ist. Jetzt möchte ich eine Messinvarianzprüfung machen, ob mein Modell gleichermaßen in der Gruppe untergewichtiger (Datensatz01$BMI<=17.5), normalgewichtigen (Datensatz01$BMI >17.5 & <25) und übergewichtigen (Datensatz01$BMI >= 25) Kindern gleichermaßen gilt. Dafür müsste ich eine neue Spalte in meinen Datensatz einfügen, in der für die entsprechenden BMI Werte die jeweilige Gewichtsklasse steht (UG/NG/ÜG).

Wie würdet ihr das anstellen? hist() oder über die which() Funktion? Aber wie bekomme ich das an meinen Datensatz ran? Für Antworten wäre ich sehr dankbar!

Re: BMI Werte in Gewichtsklassen einteilen

Verfasst: Fr Mär 09, 2018 1:51 pm
von jogo
Hallo JRM,

willkommen im Forum!
Hier habe ich schonmal etwas zu einem gleichartigen Problem geschieben.
viewtopic.php?f=7&t=800&p=3454#p3444

Gruß, Jörg

Re: BMI Werte in Gewichtsklassen einteilen

Verfasst: Fr Mär 09, 2018 4:59 pm
von EDi
Ich würde ?cut dafür verwenden:

Code: Alles auswählen

df <- data.frame(BMI = rnorm(100, 20, 5))
hist(df$BMI)

df$classes <- cut(df$BMI, breaks = c(min(df$BMI), 17.5, 25, max(df$BMI)), include.lowest = TRUE)
df$classes
df

Re: BMI Werte in Gewichtsklassen einteilen

Verfasst: Mo Apr 02, 2018 8:52 am
von databraineo
Hi JRM,

alternativ könntest Du auch verschachtelte if-else benutzen, dann könntest Du gleich die Labels als String setzen. Prinzipiell ist die cut-Funktion aber wohl die bessere Wahl, auch wenn der Output vom Typ factor ist, von dem ich kein großer Freund bin. Kann man natürlich aber konvertieren.

Code: Alles auswählen

Datensatz01$Gewichtsklasse <- ifelse(Datensatz01$BMI<=17.5,"UG",
				ifelse(Datensatz01$BMI<25,"NG",
				ifelse(Datensatz01$BMI>=25,"ÜG",NA)))
Für die cut-Funktion von EDi würde ich noch die Labels mitgeben:

Code: Alles auswählen

df$classes <- cut(df$BMI, breaks = c(min(df$BMI), 17.5, 25, max(df$BMI)), include.lowest = TRUE, labels=c("UG","NG","ÜG"))
Viele Grüße,
Holger