zu ändern Ich habe einige Ausreißer in meinem Dataset. Die interessierenden Variablen werden j_q3_1, j_q3_2,...,j_q3_14
und auch j_q4_1, j_q4_2,...,j_q4_14
genannt. Ich möchte Einträge, die größer als 95 Prozent sind, auf 95 Prozent ändern. Ich habe mich gefragt, ob ich eine Schleife erstellen könnte, die Frage Nummer ändert (q3 bis q4) und auch die letzte Nummer nach Unterstrich (1 bis 14). Irgendwelche Vorschläge werden sehr geschätzt.Schleife, um Ausreißer mehrerer Variablen zu 95% in R
Beispiel Daten (nur nur bis _2 und 3. und 4. Quartal):
test <- data.frame(hhid = c(1:5), j_q3_1 =c(1000,1500,2000,5000,10000), j_q4_1=c(500,100,200,10000,200), j_q5_1 =c(200,300,400,203,100), j_q3_2 =c(300,10000,200,300,200), j_q4_2=c(100,200,320,120,302), j_q5_2=c(10000,120,1222,300,2333))
Dieser Code für mich für jede Variable funktioniert:
quantiles <- quantile(test$j_q3_1,c(0.95))
test$j_q3_1[test$j_q3_1 > quantiles[1]] <- quantiles[1]
quantiles <- quantile(test$j_q4_1,c(0.95))
test$j_q4_1[test$j_q4_1 > quantiles[1]] <- quantiles[1]
quantiles <- quantile(test$j_q3_2,c(0.95))
test$j_q3_2[test$j_q3_2 > quantiles[1]] <- quantiles[1]
quantiles <- quantile(test$j_q4_2,c(0.95))
test$j_q4_2[test$j_q3_2 > quantiles[1]] <- quantiles[1]
Jetzt habe ich versucht, den Code zu verwenden, zu meinem gesamten Datensatz und änderte die Bedingung in das 99% -Konfidenzintervall. Es funktioniert nicht so, wie es sein sollte, da der Ausreißer von 25000 derselbe bleibt, wenn die 99% der Variablen 9260 sind. Er änderte den Mittelwert von 1606 auf 1813 und senkte die NA von 2825 auf 2801 Beobachtungen.
for (i in 3:6){
for (j in 1:14){
cname <- paste0("j_q", i, "_", j)
quantiles <- quantile(test[, cname], c(0.99), na.rm = TRUE)
test[test[!is.na(test[, cname]), cname] > quantiles[1], cname] <- quantiles[1]
}
}
Geben Sie gleiche Datenmenge und der erwarteten Ausgang, so dass wir auf der gleichen –
Dank arbeiten. Ich fügte einen Beispieldatensatz hinzu, den ich verwende, um die Schleife auch heraus zu bilden. – imprela