我在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
我尝试了多次迭代,但都失败了。任何帮助表示赞赏!
答案 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)))