Ich habe einen Datenrahmen, jede Spalte ist eine kategorische Variable und eine Spalte namens Ziel mit Wert 0 oder 1. Ich versuche, einen Datenrahmen nach Spalten zu durchlaufen und zu berechnen das mittlere Ziel durch unterschiedliche Höhe jeder Spalte.Schleife über Datenrahmenspalte nach Namen in R
n = c(2, 2, 1)
s = c(1, 0, 1)
b = c(TRUE, FALSE, TRUE)
target = c(1,0,0)
df = data.frame(n, s,b,target)
for(i in 1:a){
aggregate(df$target ~ as.name(colnames(df)[1]), df, mean)
}
Es scheint, hier kann ich nicht einfach ersetzen n in
aggregate(df$target ~ n, df, mean)
mit String. Wie löst man diese Art von Problemen? Vielen Dank.
Sie sollten eine Formel aggregieren (Ziel ~ n, Daten = df, FUN = Mittelwert) '. Sie können einen Aufruf unter Verwendung von beispielsweise "sprintf", z. 'as.formula (sprintf (" Ziel ~% s ", Spaltennamen (df) [i]))'. –
'lapply (df [, - 4], Funktion (x) {Aggregat (Ziel ~ x, Daten = df, FUN = Mittelwert)})'? – alistaire
Benötigen Sie mehrere aggregierte dfs oder laufende/bedingte Mittelwerte? Bitte illustrieren Sie mit den gewünschten Ergebnissen. – Parfait