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

在R中如何提取单列内多个变量并按分组计算受访者百分比均值

问题背景
  • 现有数据集单列存储多变量,数据集视图如下:
    数据集视图
  • 核心需求:从question列提取6个唯一问题变量,匹配对应受访者百分比数值,按国家、性别分组后计算每个问题对应的受访者百分比均值,最终输出包含国家、年份、各问题对应百分比均值的宽表。
  • 此前直接使用pivot_wider()转换宽表未得到预期结果,错误输出示例如下:
    pivot_wider输出结果
  • 原有运行代码:
dff2 <- df2 %>%
pivot_wider(names_from = 'Question', values_from = 'Percentage of respondents')
修正方案

直接调用pivot_wider()会因为同分组下存在多个重复观测生成列表列,无法得到均值结果,需要先完成分组聚合再转宽表,修正后代码如下:

# 需提前加载dplyr、tidyr包
library(tidyverse)

dff2 <- df2 %>%
  # 按国家、年份、性别、问题维度分组,计算百分比均值
  group_by(Country, Year, Gender, Question) %>%
  summarise(avg_perc = mean(`Percentage of respondents`, na.rm = T), .groups = "drop") %>%
  # 转宽表,将问题转为列名,值为对应均值
  pivot_wider(names_from = Question, values_from = avg_perc)

注:group_by中的列名需替换为你实际数据集里的对应字段名;na.rm=T会自动过滤百分比列的空值,不需要可删除该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:03