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

R语言Dataframe三类分类变量整合及关联分析问题咨询

解决方案

1. 数据结构转换(宽表转长表)

你当前的关系主题是以列维度延展的宽表结构,首先要转换为长表,让所有分类变量都以单独列的形式存在,方便后续分组调用。可直接用tidyverse套件完成操作,同时你原有的筛选代码可以用%in%运算符简化,不需要重复写判断条件:

library(tidyverse)
# 筛选目标国家+宽表转长表
df_long <- df_full %>%
  # 筛选指定6个国家
  filter(Country %in% c("GER", "CH", "UK", "US", "IN", "JP")) %>%
  # 把10个关系主题的列转为行,names_to指定新生成的主题列名,values_to指定主题是否出现的标记列名
  pivot_longer(cols = c("Bel_Insp", "Emb_Real", "Excitement", "Good_Deed", "New_Real", "New_Rel", "Rel_Resc", "Rel_Togeth", "Rel_Warmth", "Transf_Reb"),
               names_to = "relationship_theme",
               values_to = "is_appear") %>%
  # 仅保留主题实际出现的记录(如果你的主题列值为0/1标记是否出现,可保留这行)
  filter(is_appear == 1)

2. 合并文化维度数据

如果你的文化维度数据是单独存储的表,直接用国家字段作为关联主键合并到上面的长表即可:

# 假设文化维度表名为df_culture,关联键为Country
df_final <- df_long %>%
  left_join(df_culture, by = "Country")

3. 输出表结构说明

最终生成的df_final每一行对应一条「特定国家下某类关系主题出现」的记录,所有你需要的分类变量都已单独成列:

  • Country:共6个水平,对应你筛选的6个国家
  • relationship_theme:共10个水平,对应10类关系主题
  • 6个文化维度字段:和国家一一对应

后续需要统计频次、分组绘制直方图都可以直接用这三类变量作为分组因子,比如统计每个文化维度下各关系主题的出现频次代码如下:

theme_culture_freq <- df_final %>%
  group_by(你的文化维度列名, relationship_theme) %>%
  summarise(freq = n(), .groups = "drop")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:04