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

如何在tidyverse中通过映射高效统计mtcars多列达标行数?

批量统计mtcars各变量中大于指定行数值的行数

方法1:使用dplyr的across(推荐,更简洁)

这种方法利用dplyr的批量处理函数across,无需额外循环或map,直接在管道中完成所有变量的统计:

library(tidyverse)

# 获取第6行(Valiant)作为参考值
reference <- mtcars %>% slice(6)

# 生成包含所有变量计数的宽格式tibble
result <- mtcars %>%
  summarise(
    across(
      everything(),  # 处理所有变量
      ~ sum(.x > reference[[cur_column()]])  # 统计当前变量大于对应参考值的行数
    )
  )

result

方法2:使用purrr的map_dfc

如果你更倾向于用map系列函数实现,可通过map_dfc批量处理每个变量并按列合并结果:

library(tidyverse)

reference <- mtcars %>% slice(6)

# 获取所有变量名称
var_names <- names(mtcars)

# 批量处理每个变量,合并为tibble
counts_tibble <- map_dfc(var_names, function(var) {
  mtcars %>%
    filter(.data[[var]] > reference[[var]]) %>%
    count() %>%
    pull() %>%
    set_names(var)
})

counts_tibble

说明

  • 两种方法都能自动处理所有变量,无需为每个变量重复编写筛选、计数代码,适合处理上百个变量的场景。
  • reference[[cur_column()]]和.data[[var]]都是为了实现动态变量引用,确保每个变量匹配对应行的参考值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:01:07