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

如何从R数据框的组合变量名中拆分标识生成新分类变量

你需要的效果可以通过宽表转长表+列名拆分实现,用tidyverse生态的pivot_longer函数可以一步完成:

第一步:加载依赖包

# 未安装的话先执行 install.packages("tidyverse")
library(tidyverse)

第二步:执行转换

假设你的数据集存在变量df中:

df_long <- df %>%
  pivot_longer(
    # 保留前4列业务标识字段,剩余都是带X/Y/Z后缀的指标字段
    cols = -c(subject, group_type, session_code, exposure),
    # 按末尾匹配X/Y/Z的下划线拆分列名,不会拆分指标名中间的下划线
    names_sep = "_(?=[XYZ]$)",
    # 拆分后第一部分存指标类型,第二部分存你需要的X/Y/Z维度标识
    names_to = c("indicator", "dimension"),
    values_to = "value"
  )

转换结果说明

最终得到的长表共6列:

  • 前4列为原有的业务标识字段
  • 新增indicator列:存储指标类型(值为beta_early/gamma_peak)
  • 新增dimension列:就是你需要的X/Y/Z分类变量
  • 新增value列:存储对应指标+维度的数值

转换后前6行示例:

# A tibble: 60 × 6
  subject group_type session_code exposure indicator   dimension value
  <chr>   <chr>      <chr>        <chr>    <chr>       <chr>     <dbl>
1 X1      GRP1       A            LOW-CNT  beta_early  X          -6.4
2 X1      GRP1       A            LOW-CNT  beta_early  Y          -3.5
3 X1      GRP1       A            LOW-CNT  beta_early  Z          10.2
4 X1      GRP1       A            LOW-CNT  gamma_peak  X          -7.7
5 X1      GRP1       A            LOW-CNT  gamma_peak  Y          -3.8
6 X1      GRP1       A            LOW-CNT  gamma_peak  Z           7.2

如果你需要按指标类型拆分出单独的X/Y/Z列,可以在上述转换后再用pivot_wider转回对应结构即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:45:04