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

R使用dplyr across批量计算多列top2/bottom2 box得分的方法

R 多列分组计算top/bottom/middle box得分解决方案

核心问题修正

你之前的自定义函数存在两处错误:[[cur_column]]的列引用方式不符合dplyr跨列计算语法,且占比统计未考虑缺失值的影响,改用.x指代当前遍历列即可简化实现。

第一步:定义box得分计算函数

你的数据为7分李克特量表,默认阈值设置如下,可根据实际分制调整:

# 三个box得分计算函数列表
box_cal <- list(
  # top2 box:得分6、7的占比
  top2_box = ~sum(.x >= 6, na.rm = TRUE) / sum(!is.na(.x)),
  # bottom2 box:得分1、2的占比
  bottom2_box = ~sum(.x <= 2, na.rm = TRUE) / sum(!is.na(.x)),
  # middle3 box:得分3、4、5的占比
  middle3_box = ~sum(.x >= 3 & .x <= 5, na.rm = TRUE) / sum(!is.na(.x))
)

如果需要输出百分比格式,直接在公式末尾乘100即可。

第二步:分组计算各列box得分

library(dplyr)

box_result <- cleanuxq2 %>% 
  # 筛选目标列
  select(starts_with("X"), list, urespid_0, segment) %>%
  # 按segment分组
  group_by(segment) %>%
  summarize(across(
    # 仅对数值列计算
    .cols = where(is.numeric),
    # 传入自定义的计算函数
    .fns = box_cal,
    # 输出列名规则:原列名_函数名
    .names = "{col}_{fn}"
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:57:04