使用管道汇总houses数据集多列统计值 输出3x3结构化tibble
方案1:先转换为长表再分组统计(逻辑更直观)
library(tidyverse) houses %>% # 选中需要计算的三列 select(price, age, dist) %>% # 转为长表,列名存为variable列,数值存为value列 pivot_longer(everything(), names_to = "variable", values_to = "value") %>% # 按变量分组统计 group_by(variable) %>% summarise( min = min(value, na.rm = TRUE), max = max(value, na.rm = TRUE), mean = mean(value, na.rm = TRUE) )
参数na.rm = TRUE用于跳过缺失值计算,若你的数据集无缺失可删除该参数。
方案2:直接宽表计算后重塑结构(代码更简洁)
这里用新版dplyr的across()替代已经弃用的summarise_each(),计算完直接重塑结构即可得到目标格式:
library(tidyverse) houses %>% summarise(across(c(price, age, dist), list(min = min, max = max, mean = mean), na.rm = TRUE)) %>% # 拆分列名直接提取变量与统计维度,一步转为目标格式 pivot_longer(everything(), names_to = c("variable", ".value"), names_sep = "_")
两种方案输出的tibble结构完全一致:第一列是变量名(price/age/dist),后三列分别对应最小值、最大值、均值,共3行3列。
内容的提问来源于stack exchange,提问作者bristol3328
相关产品推荐
相关产品推荐

