使用colwise, is.numeric in ddply in R 进行分位数计算
Using colwise, is.numeric in ddply in R for quantile calculation
我在 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
我尝试了多次迭代,但都失败了。感谢您的帮助!
我们可以试试 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)))
我在 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
我尝试了多次迭代,但都失败了。感谢您的帮助!
我们可以试试 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)))