You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写可遍历数据框数值变量的R统计函数求助

批量生成数据框数值变量的统计量表格

优化单个变量统计函数

先简化你原有的describe_stats函数,避免嵌套full_join的冗余写法,同时添加缺失值处理让函数更健壮:

library(tidyverse)

describe_stats <- function(x) {
  tibble(
    name = c("median", "min", "max", "lower_quantile", "upper_quantile"),
    value = c(
      median(x, na.rm = TRUE),
      min(x, na.rm = TRUE),
      max(x, na.rm = TRUE),
      quantile(x, 0.25, na.rm = TRUE),
      quantile(x, 0.75, na.rm = TRUE)
    )
  )
}

编写批量处理函数

接下来写一个批量处理函数,自动筛选数据框中的数值变量,对每个变量调用describe_stats,并整合成统一的结果数据框:

describe_all_stats <- function(df) {
  # 筛选数据框中的数值型变量
  numeric_vars <- select(df, where(is.numeric))
  
  # 遍历每个数值变量,提取统计值并按列合并
  numeric_vars %>%
    imap_dfc(function(var, var_name) {
      # 对单个变量生成统计量,并重命名value列为变量名
      describe_stats(var) %>% 
        rename(!!var_name := value) %>% 
        select(-name)
    }) %>%
    # 添加统计量名称列,并移到最前面
    mutate(name = c("median", "min", "max", "lower_quantile", "upper_quantile")) %>%
    relocate(name)
}

测试示例

用mtcars数据集测试函数:

# 生成统计结果
stats_result <- describe_all_stats(mtcars)

# 查看结果
print(stats_result)

输出结果结构如下(每行对应一个统计量,每列对应一个变量):

# A tibble: 5 × 11
  name            mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
  <chr>         <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 median         19.2     6  196.   123  3.69  3.32  17.7     0     0     4     2
2 min            10.4     4  71.1    52  2.76  1.51  14.5     0     0     3     1
3 max            33.9     8  472    335  4.93  5.42  22.9     1     1     5     8
4 lower_quantile 15.4     4  120.    96  3.08  2.58  16.9     0     0     3     2
5 upper_quantile 22.8     8  326    180  3.92  3.61  18.9     1     1     4     4

提取特定统计值

你可以轻松提取目标变量的指定统计量,比如获取mpg的中位数:

stats_result %>% filter(name == "median") %>% pull(mpg)
# 或者直接用索引
stats_result$mpg[stats_result$name == "median"]

内容的提问来源于stack exchange,提问作者user29619690

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:07:32