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

时间:2015-06-23 06:45:58

标签: r dataframe quantile

我有一个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()形成一个拟合列表。

2 个答案:

答案 0 :(得分:3)

您可以将findIntervalby;

结合使用
by(df,findInterval(df$Y,quantile(df$Y,c(0.25,0.5,0.75))),estFun)

答案 1 :(得分:2)

尝试

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