r - 总结为使用 dplyr 的分位数?
问题描述
假设一个人正在处理 中的数据框dplyr
,并且想将一个人的数据汇总到一个表中,其中每个十分位数都有一列。撇开为什么要这样做的问题,还有如何做的问题。
之前已经注意到它summarize
不喜欢向量值函数。正如那篇文章中提到的,最直接的做法就是为每个十分位数创建一个显式列:
df <- data.frame(value=rnorm(1000)) %>%
summarize(`0.1` = quantile(value, 0.1),
`0.2` = quantile(value, 0.2),
`0.3` = quantile(value, 0.3),
...)
这显然是卑鄙的。然而,正如链接问题中提到的那样,如何使用ddply
nor来实现这一目标对我来说并不是很明显。do
感觉应该有一种“整洁”的方式来做到这一点,大致如下:
df <- data.frame(value=rnorm(1000)) %>%
summarize(quantiles = quantile(value, seq(0.1, 0.9, 0.1))) %>%
expand_vector_to_columns()
在那儿?
解决方案
这可能会做到:
df <- data.frame(value=rnorm(1000)) %>%
unlist %>%
quantile(seq(.1, .9, .1)) %>%
matrix(., 1,9, dimnames=list(NULL, names(.))) %>%
as.data.frame(., col.names=colnames(.))
#df
# 10% 20% 30% 40% 50% 60% 70% 80% 90%
#1 -1.275 -0.8528 -0.5258 -0.2353 0.0303 0.3051 0.5732 0.8918 1.278
推荐阅读
- javascript - 将新原型分配为 InheritingClass.prototype = Object.create(InheritedClass.prototype)
- mysql - 如何为 mariadb、node.js 和 websockets 创建准备好的语句
- java - 在 GUI 设计中难以将数组列表的值加载到 Jcombobox 中
- android - 我正在尝试从手机中获取音频文件,但我的应用无法获取文件,因为我编写了这行代码帮助我找到解决方案
- mysql - 在 SQL 查询之外导出值(回调地狱)
- javascript - 如何在不使用特定 ID 的情况下使用 jsPDF 生成 pdf
- python - 你怎么知道 Facebook 的 Graph API 缺少哪些权限?
- ios - Flutter 重复符号“_FLTPathProviderPlugin”问题
- rust - 是否可以在 wayland / wayland-rs 中创建 web 容器
- javascript - 通过 selenium python 查找父元素