在R中的ddply中使用colwise,is.numeric进行分位数计算

时间:2016-01-02 19:54:28

标签: r plyr summary quantile

我在R中工作,试图在ddply中使用colwise(function,is.numeric)命令,我无法让它适用于特定的分位数。我想要第25个分位数,但是当你在多个数字列上执行此功能时,我无法使其工作。

以下是我正在使用的示例:

d <- data.frame(groups=c(rep("A",4), rep("B",4), rep("C",4)),
        otu1 = runif(12, min=0, max=100),
        otu2 = runif(12, min=0, max=100),
        otu3 = runif(12, min=0, max=100)
        )

我可以使用其他摘要功能:

library(plyr)
medians<-ddply(data, c("groups"), colwise(median, is.numeric))

然而,分位数函数给了我所有5个选项,当我定义一个特定的分位数时,我无法弄清楚如何使用colwise与is.numeric:

highq<-ddply(data, c("groups"), colwise(quantile, is.numeric))  #works but does not give you a specific quantile
highq<-ddply(data, c("groups"), colwise(quantile(is.numeric, probs=0.75), is.numeric))  #does not work

我尝试了多次迭代,但都失败了。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

我们可以试试data.table

library(data.table)
setDT(d)[,lapply(.SD, quantile, probs=0.75) , groups]

或使用dplyr

library(dplyr)
d %>%
  group_by(groups) %>% 
  summarise_each(funs(quantile(., probs=0.75)))