计算每行的分位数后如何选择行?

时间:2019-08-15 17:14:53

标签: r dataframe matrix dplyr quantile

我有一个带有数值值(12579行和21列)的大数据框,我想从中提取出适合每行第一和第四四分位数的列(每行都有独立的值)。

这就是为什么我计算每行的分位数以获得每行两个截止的原因。

library(matrixStats)
d_q1 <- rowQuantiles(delta, probs = c(0.25, 0.75))

delta2 <- as.data.frame(cbind(delta,d_q1))
dim(delta2) # 12579    23

library(dplyr)
delta2 <- filter(delta2, delta2[,1:21] <= `25%` & delta2[,1:21] >= delta2$`75%`)

我期望在第一季度和第四季度获得这些值。但是,当我尝试过滤值时,总是收到错误消息:

Error: Result must have length 12579, not 264159

有人可以帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我不太确定您在这里尝试什么,但是我的猜测是您希望每一行的值都小于Q1且大于Q3。在这种情况下,这条线应该适合您。

t(apply(delta, 1, sort))[,c(1:6, 16:21)]

关于您的代码,dplyr :: filter()不能那样工作,它是为您提供数据框中行的子集,因此其参数必须是与数字长度相同的逻辑向量数据框中的行数。