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

如何在R中拆分DataFrame列名并将指标前缀移至独立列

在R中重塑DataFrame:拆分列名并重组结构

准备工作

首先加载tidyverse包(包含dplyr和tidyr,用于数据重塑),并构造示例数据:

library(tidyverse)

# 构造示例DataFrame
df <- tibble(
  Date = c("2022-01-01", "2022-02-01"),
  user_count_target = c(123, 110),
  user_count_actual = c(113, 100),
  user_count_forecast = c(103, 105),
  sales_target = c(83, 90),
  sales_actual = c(12, 75),
  sales_forecast = c(13, 100)
)

核心代码

使用pivot_longer一步完成列名拆分和数据重塑:

df_processed <- df %>%
  pivot_longer(
    cols = -Date,  # 排除Date列,处理其余所有列
    names_to = c("metric", ".value"),  # 拆分列名为metric(指标名)和值列名(target/actual/forecast)
    names_sep = "_(?=target|actual|forecast)"  # 正则匹配拆分位置:下划线后紧跟指定后缀
  ) %>%
  arrange(Date, metric)  # 按日期和指标排序,与目标结构一致

结果说明

运行上述代码后,df_processed即为目标结构:

Datemetrictargetactualforecast
2022-01-01user_count123113103
2022-01-01sales831213
2022-02-01user_count110100105
2022-02-01sales9075100

代码解释

  • names_sep = "_(?=target|actual|forecast)":使用正则表达式正向预查,确保拆分下划线的位置后面是target/actual/forecast,避免拆分指标名中的下划线(比如user_count里的下划线不会被拆分)。
  • names_to = c("metric", ".value"):.value是特殊参数,告诉pivot_longer将拆分后的第二部分作为值的列名,直接生成target/actual/forecast三列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:37