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

在R中为数据集创建子列:按国家统计问卷选项计数

R实现文化价值观问卷数据的多问题选项频次统计

完整代码

# 加载依赖包
library(tidyverse)

# 1. 将宽格式数据转为长格式,自动匹配所有Q开头的问卷列
long_data <- WVSDATASET %>%
  pivot_longer(
    cols = starts_with("Q"),
    names_to = "question",
    values_to = "option"
  ) %>%
  filter(!is.na(option))  # 可选:排除选项为缺失值的记录

# 2. 分组统计每个国家、每个问题、每个选项的响应次数
count_data <- long_data %>%
  group_by(B_COUNTRY_ALPHA, question, option) %>%
  summarize(count = n(), .groups = "drop")

# 3. 转回目标宽格式:国家为行,问题+选项为列,空值填充0
final_df <- count_data %>%
  pivot_wider(
    id_cols = B_COUNTRY_ALPHA,
    names_from = c(question, option),
    values_from = count,
    values_fill = 0
  )

代码说明

  • 自动遍历问卷列:用starts_with("Q")自动匹配所有Q开头的问卷列(Q1-Q7),无需手动逐个指定,满足批量处理需求。
  • 长格式转换:将原本分散在多列的问卷数据转为「国家-问题-选项」的长表结构,便于统一分组统计。
  • 频次统计:通过group_by()按国家、问题、选项三级分组,summarize(n())计算每组的响应次数。
  • 宽格式输出:用pivot_wider()将统计结果转回目标格式,列名自动生成为Q1_1、Q1_2这类「问题_选项」的形式,values_fill = 0确保未出现的选项频次显示为0而非缺失值。

可选优化

如果原数据中存在未填写的问卷选项(即option为NA),可以保留代码中的filter(!is.na(option))来排除这类无效记录,避免统计无效频次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:17:31