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

R语言如何将数据框中多列日期及对应容量转为两列存储

解决方案

方法1:使用tidyverse包实现(推荐)

该方法适配你最后20列为日期列的场景,代码通用易调整:

# 未安装包先运行:install.packages("tidyverse")
library(tidyverse)

df_result <- df %>%
  pivot_longer(
    cols = last(20), # 直接选取最后20列作为要转换的日期列
    names_to = "date", # 原日期列的列名存入新的date列
    values_to = "capacity" # 原日期列的数值存入新的capacity列
  )

如果你的日期列均以date为前缀,也可以将cols参数替换为cols = starts_with("date"),匹配更精准。

方法2:使用base R实现(无需安装额外包)

适合不想引入第三方依赖的场景:

# 配置参数:前3列为非日期属性列,剩余为日期列,可根据你的实际列数调整
non_date_col_num <- 3
date_cols <- (non_date_col_num + 1):ncol(df)

df_result <- reshape(
  df,
  direction = "long",
  varying = date_cols,
  v.names = "capacity",
  timevar = "date",
  times = names(df)[date_cols]
)
# 清理reshape生成的冗余列,重置行号
df_result <- df_result[, -ncol(df_result)]
rownames(df_result) <- NULL

两种方法输出的结果均与你期望的结构完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:24:02