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

R语言宽格式数据转长格式避免时间变量前出现X的方法咨询

R语言宽格式时间数据转长格式无X前缀实现方法

问题背景

当前持有的宽格式数据集示例如下:
宽格式数据示例
需要转换为如下长格式,且时间变量名前不自动添加X前缀:
长格式预期效果

最简实现方案

用tidyverse生态的pivot_longer函数即可直接实现,操作步骤如下:

1. 依赖包加载

library(tidyverse)

2. 示例数据构造

df <- structure(list(X1 = c("01/12/2019", "02/12/2019"), `00:30` = c(41.95, 39.689), `01:00` = c(44.96, 40.47), `01:30` = c(42.939, 38.95), `02:00` = c(43.221, 40.46), `02:30` = c(44.439, 41.97)), class = "data.frame", row.names = c(NA, -2L), spec = structure(list(cols = list(X1 = structure(list(), class = c("collector_character", "collector")), `00:30` = structure(list(), class = c("collector_double", "collector")), `01:00` = structure(list(), class = c("collector_double", "collector")), `01:30` = structure(list(), class = c("collector_double", "collector")), `02:00` = structure(list(), class = c("collector_double", "collector")), `02:30` = structure(list(), class = c("collector_double", "collector"))), default = structure(list(), class = c("collector_guess", "collector")), skip = 1L), class = "col_spec"))

3. 宽转长核心代码

df_long <- df %>%
  pivot_longer(
    cols = -X1,
    names_to = "时间",
    values_to = "数值"
  )

避免X前缀的注意事项

  • 从数据源导入时直接加check.names=FALSE参数,可从根源避免R自动给非标准列名加X前缀:
    # 以csv导入为例
    df <- read.csv("你的数据文件路径.csv", check.names = FALSE)
    
  • 如果已经导入的数据列名已带X前缀,可在转换后加一步去前缀操作:
    df_long <- df %>%
      pivot_longer(cols = -X1, names_to = "时间", values_to = "数值") %>%
      mutate(时间 = str_remove(时间, "^X"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:24:01