r - 计算每行的分位数后如何选择行?
问题描述
我有一个带有数值(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
有人可以帮助我吗?谢谢!
解决方案
我不完全确定您在这里尝试什么,但我的猜测是您希望每一行的值小于 Q1 且大于 Q3。在这种情况下,这条线应该适合你。
t(apply(delta, 1, sort))[,c(1:6, 16:21)]
关于您的代码, dplyr::filter() 不能那样工作,它旨在为您提供数据框中行的子集,因此其参数需要是与行数相同长度的逻辑向量你的数据框。
推荐阅读
- orchardcms - 有没有办法在放置和渲染发生之前改变 Orchard 内容形状的显示类型?
- html - 为我的网站制作简单的图像滑块
- templates - 模板中除最后一项之外的所有内容的 Wagtail 基本菜单分隔符
- kubernetes - 由于 GCP 服务帐户,Pod 在 Kubernetes 中获得了 CrashLoopBackOff
- sql-server - 计数日的 T-SQL 脚本
- python - 如何使对象在 tkinter 中不断移动
- html - 响应式缩放绝对定位的元素
- jquery - 有没有办法旋转 HTML 选择框的内容?
- unreal-engine4 - 为多个网格创建通用蓝图
- reactjs - 在 Sagas 测试中没有调用我的模拟函数