首页 > 解决方案 > 计算每行的分位数后如何选择行?

问题描述

我有一个带有数值(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

有人可以帮助我吗?谢谢!

标签: rdataframematrixdplyrquantile

解决方案


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

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

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


推荐阅读