Die Quantil-Funktion selbst erlaubt es nicht, auf einer Teilmenge zu arbeiten. Sie benötigen also eine Möglichkeit, um Teilmengen zu extrahieren.
Es wird jedoch nicht empfohlen, einen Teilmengen-Datenrahmen zu extrahieren, wie Sie es getan haben. quantile
akzeptiert einen Vektor, so dass Sie nur eine Spalte und nicht den gesamten Datenrahmen unterteilen müssen.
quantile(with(carddata, limit_amount[new_user_indicator == "Y"]), 0.25)
Die with
Funktion hilft Extrakt Spalte, sonst müssen Sie
quantile(carddatal$imit_amount[carddata$new_user_indicator == "Y"], 0.25)
Update
Wenn Sie dies immer wieder tun, dann schreiben Sie eine Funktion (Funktion Namensänderung foo
zu Ihrem Favoriten)
foo <- function(df, out_var, in_var, in_level, prob) {
quantile(df[[out_var]][df[[in_var]] == in_level], prob)
}
Dann können Sie tun:
foo(carddata, "limit_amount", "new_user_indicator", "Y", 0.25)
Ich gehe davon aus Sie eine andere Ebene "N", also für diese Ebene Sie
foo(carddata, "limit_amount", "new_user_indicator", "N", 0.25)
hier tun können, out_var
sind in_var
Spaltennamen (daher eine Zeichenkette) für die Ausgangsvariable eine Eingangsvariable. in_level
ist die Ebene für die Eingabevariable. Und Sie wissen, was prob
ist.
eine leistungsfähigere Weise
Wenn Sie ein 0,25 für alle Ebenen der Eingangsgröße wollen, dann meine Funktion ist noch dumm. Verwenden tapply
tapply(carddata$limit_amount, cardata$new_user_indicator, FUN = quantile, prob = 0.25)
tapply(x1, x2, FUN, ...)
gelten quantile(x1, ...)
bis nach x2
. Wenn Sie 10 Stufen in x2
haben, erhalten Sie 0,25 Quantil für alle von ihnen.
Wie wäre es mit 'Quantil (Teilmenge (carddata, new_user_indicator ==" Y ") $ limit_amount, .25)'? – Frank