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

在R语言中按条件堆叠多列且保留指定变量为单独列的方法求助

数据重塑解决方案

你需要的是多值维度的宽表转长表操作,核心是拆分原始列名的「条件标识」和「情绪类型」两个部分,不需要把所有值堆叠到同一列。以下是两种常用数据分析环境的实现方案:

R (tidyverse 方案)

使用tidyr::pivot_longer的.value参数实现多值输出,不会合并情绪变量到同一列:

library(tidyverse)

# 导入数据后执行重塑
df_long <- df %>%
  pivot_longer(
    cols = -ID, # 排除ID列,其余列全部参与重塑
    names_to = c("Condition", ".value"), # 拆分列名到两个部分,.value表示保留该部分作为输出列名
    names_sep = "_" # 列名按下划线拆分
  ) %>%
  mutate(Condition = as.integer(str_remove(Condition, "Cond"))) # 清理条件列的前缀,转成数值

Python (pandas 方案)

使用pd.wide_to_long直接适配带前缀的列结构,一键完成重塑:

import pandas as pd

# 导入数据后执行重塑
df_long = pd.wide_to_long(
    df,
    stubnames = ["sad", "anxious", "happy"], # 指定要保留的情绪变量前缀
    i = "ID", # 主键列
    j = "Condition", # 输出的条件列名
    sep = "_", # 列名分隔符
    prefix = "Cond" # 条件部分的前缀,会自动提取后续数字作为Condition值
).reset_index()

# 调整列名首字母大写匹配预期输出
df_long = df_long.rename(columns={"sad":"Sad", "anxious":"Anxious", "happy":"Happy"})

两种方案运行后都可以直接得到你预期的输出结构,相比普通的melt/堆叠操作,无需后续再做拆分合并的额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:05