如何使用ddply将函数应用于由数据框的另一列中的每个因子拆分的一列?

时间:2016-01-14 00:19:08

标签: r dataframe split plyr

M数据如下所示:

标签:1 1 1 2 3 2 5 5 5 2 2 3 3 5 6 7 8 ...
电话:132 123 838 29 1 23 0 283 238 2 123 2 ...

两列都是数字,我想计算Label中每个因子的数字分位数。

#the function I want to use to calc the quantiles
qfn <- function(x) quantile(x, probs = seq(0, 1, 0.2), na.rm = TRUE)

#Using the by function
results <- by(data$Numbers, data$Label, qfn)

我得到了正确的结果,但它是&#34; by&#34;类而不是数据框。

Label: 1  
0%      20%     40%     60%     80%     100%   
1.2     3.5     7.8     9.10    30.1    105.3

Label: 2  
0%      20%     40%     60%     80%     100%   
1.9     2.5     5.8     8.10    23.1    99.3

...

如何使用ddply在数据框中获得相同的结果?

当我使用类似的东西时:

results <- ddply(data, "Label", qfn) 

我通过Label的因子获得了正确的分组,但在我的情况下,函数应用于错误的列 - 当我希望将函数应用于Numbers时,它也应用于Label的值。

谢谢!

1 个答案:

答案 0 :(得分:0)

这让我获得了我想要的结果,但没有使用ddply

result <- do.call(rbind, with(data, {tapply(data$Numbers, data$Label, qfn)}))