r - 如何创建一个函数来计算每个数据列、每个数据因子的中位数和四分位数?
问题描述
我有代码来计算一个数据集
quant0 = c(0.5)
Median = apply(data1[2:1000], 2, median, probs = quant0, na.rm = TRUE )
quant1 = c(0.25)
firstQuartiles = apply( data1[2:1000] , 2 , quantile , probs = quant1 , na.rm = TRUE )
quant2 = c(0.75)
thirdQuartiles = apply( data1[2:1000] , 2 , quantile , probs = quant2 , na.rm = TRUE )
我有多个数据集,其格式与我用于上述代码的格式相同。这是所有数据框的样子:
Type x1 x2 x3 ...
1: type1 1.54 1.48 1.88
2: type2 1.46 1.99 1.48
3: type1 2.01 1.02 1.03
...
我是编写函数的新手。我需要应用此函数的其他数据集与我上面显示的格式完全相同。唯一会改变的是列数。 编辑:我没有正确解释,我想使用一个函数来计算每种类型的每列的中位数、第一四分位数和第三四分位数。
这是我用来执行我在上面的编辑中指定的代码:
library(dplyr)
FactorMedians = data1 %>%
group_by(Type) %>%
summarise(across(starts_with('x'), median, probs = quant0, na.rm = TRUE))
我需要将其更改为可以与其他类似数据集一起使用的函数
解决方案
这是一个有趣的tidyverse
解决方案。summarize
如果汇总函数有多个输出,则该函数返回多行。然后我们可以命名这些行。
library(dplyr)
library(tibble)
iris %>%
summarise(across(where(is.numeric),
function(x) quantile(x,
probs = c(0.25, 0.5, 0.75),
na.rm = TRUE))) %>%
mutate(id = c("first quartile", "median", "third quartile")) %>%
column_to_rownames("id")
Sepal.Length Sepal.Width Petal.Length Petal.Width
first quartile 5.1 2.8 1.60 0.3
median 5.8 3.0 4.35 1.3
third quartile 6.4 3.3 5.10 1.8
推荐阅读
- java - Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER) 不显示设置默认拨号应用程序的对话框
- android - 如果我滚动任何recycleview,如何并排滚动两个水平滚动视图两者都将像单个recyclervie一样工作
- jestjs - 无法忽略导入开玩笑
- android - Firebase 安装 API - CreateInstallation 错误(Android 应用程序)
- android - 如何删除 Firebase 云数据库中的两个文档?
- wpf - 自定义对象的 WPF DataGrid 列模板
- javascript - 循环完成后如何使用javascript再次执行循环
- graphql - Apollo 服务器与 Apollo-server-express
- python - 破折号的默认字体值是多少?
- docker - 如何使用 docker_host_info 过滤处于退出状态的 docker 容器?