Ich muss Vektoren [Attribute] von remove_outliers
Funktion in einem Datenrahmen zurückgegeben. Gerade jetzt, ich bekomme eine große Matrix. Ich habe append Methode versucht (folgend)binden Vektoren in einer Schleife mit R
# function to calculate IQR and upper and lower limit of given attribute
remove_outliers <- function(attribute, na.rm = TRUE, ...) {
IQR_val <- quantile(attribute, probs=c(.25, .75), na.rm = na.rm, ...)
LF <- 1.5 * IQR(attribute, na.rm = na.rm)
attribute_W_NA <- attribute
attribute_W_NA[attribute < (IQR_val[1] - LF)] <- NA
attribute_W_NA[attribute > (IQR_val[2] + LF)] <- NA
attribute_W_NA
}
cleaned_data <- NULL
for(i in 1:ncol(data_rm_val)){
# cleaned data with NA entries replacing outliers
cleaned_data <- cbind(cleaned_data, remove_outliers(data_rm_val[,i]))
}
es in großer Matrix führt
Stromausgang ist: (mit cbind in loop)
und das gewünschte Ergebnis sollte ein Datenrahmen mit der gleichen Anzahl von Zeilen und Spalten sein.
Jede Hilfe würde sehr geschätzt werden. PS: Ich bin ein Neuling in R und Data Science.
Für eine Schleife versuchen Sie 'cbind' anstelle von' append', obwohl 'apply (data_rm_val, 2, remove_outliers)' wird wahrscheinlich schneller und besser für das, was Sie wollen. – Barker
Wenn Sie eine Schleife verwenden möchten, weisen Sie ein Objekt mit der richtigen Größe vor oder Sie erhalten eine schreckliche Leistung. Das heißt, es gibt bessere Möglichkeiten, dies ohne eine Schleife zu tun. Wenn Sie Ihrer Frage einige Daten hinzufügen, wird wahrscheinlich jemand eine davon veröffentlichen. – alistaire
okay. Ich werde das versuchen. Ich versuchte cbind auch. Ich habe einen Datenrahmen (eine große Matrix). –