将函数应用于 R 数据帧的每个分位数

Applying a function to each quantile of an R dataframe

我有一个 R 数据框,我想为其每个分位数应用估计函数。这是 lm():

的示例
df <- data.frame(Y = sample(100), X1 = sample(100), X2 = sample(100))
estFun <- function(df){lm(Y ~ X1 + X2, data = df)}

如果我将它分成中位数两侧的两个子集,我可以用两条线来管理:

fitsLo <- estFun(df[df$Y < median(df$Y),])
fitsHi <- estFun(df[df$Y > median(df$Y),])

但是,我想找到一个更通用的解决方案,我可以任意选择分位数的数量,也许 lapply() 形成一个拟合列表。

您可以将 findIntervalby 结合使用;

by(df,findInterval(df$Y,quantile(df$Y,c(0.25,0.5,0.75))),estFun)

尝试

 df$grp <- with(df, cut(Y, breaks=quantile(Y)))
 by(df, df$grp, FUN=estFun)