für mich geht es jetzt mit R immer weiter ans eingemachte, aber gerade stehe ich wie der Ochs vorm Berg.
Ich habe etliche Indikatoren, die ich mittels z-Transformation standardisieren und anschließend klassieren möchte.
Als Beispiel hier mal ein Auszug aus Bevölkerungsdaten nach Altersgrupen:
Code: Alles auswählen
id ew_bst_sum qew_bst_0bu3 qew_bst_3bu6 qew_bst_6bu10
11 4553 3.382385 2.965078 4.238963
12 2433 2.794903 3.123716 3.699137
13 2046 2.492669 2.785924 3.225806
14 2176 2.297794 3.079044 3.814338
15 7034 2.857549 2.772249 3.284049
16 8375 2.626866 2.531343 3.450746
17 7667 3.573758 3.521586 4.199817
Code: Alles auswählen
# Daten einlesen
data_ind <- data.table(read.xlsx(FILE_DATA_IMP))
#1. Anzahl der Fälle
n <- nrow(data_ind)
#2. Anteilswert für die Gesamtstadt berechnen
mw <- weighted.mean(data_ind$qew_bst_0bu3,data_ind$ew_bst_sum)
#3. Standardabweichung berechnen mit mw für die Gesamtstadt
sd <- sqrt((1/(n-1)) * (sum((data_ind$qew_bst_0bu3 - mw) ^ 2)))
# 4. z-Wert bestimmen
data_ind$z_qew_bst_0bu3<-scale(data_ind$qew_bst_0bu3, center=mw, scale=sd)
# 5. Klassen zuweisen
data_ind$kls_qew_bst_0bu3 <- case_when(
data_ind$z_qew_bst_0bu3 >= 1.5 ~ 2,
data_ind$z_qew_bst_0bu3 >= 0.5 & data_ind$z_qew_bst_0bu3 < 1.5 ~ 1,
data_ind$z_qew_bst_0bu3 > -0.5 & data_ind$z_qew_bst_0bu3 < 0.5 ~ 0,
data_ind$z_qew_bst_0bu3 > -1.5 & data_ind$z_qew_bst_0bu3 <= -0.5 ~ -1,
data_ind$z_qew_bst_0bu3 <= -1.5 ~ -2
)
So weit, so gut!
Jetzt möchte ich das Ganze aber für alle Spalten, die mit "q" beginnen entsprechend machen.
Also zu jedem Indikator eben den z-Wert und die entsprechende Klasse in den Datensatz schreiben.
Das klingt im Grunde nach einer völlig simplen Angelegenheit.
Aber irgendwie will der Groschen bei mir nicht fallen.
Kann mir jemand auf die Sprünge helfen?
Das wäre echt super.
Vielen Dank schonmal im Voraus
Benne