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

使用pivot_longer处理时间序列数据时日期列错乱如何解决

问题原因

当前代码的pivot_longer(-ID)仅排除了ID列作为标识列,会把Date列也纳入需要转长的变量范围,导致日期被拆分为独立行,不符合预期。

调整思路

将Date列也设为不需要转长的标识列,仅对Var1、Var2两个变量列做宽转长,同时丢弃原变量名列,将值列命名为Value即可。

完整可运行代码

library(dplyr)
library(tidyr) # pivot_longer属于tidyr包,需要显式加载

ID = c("297557", "279557", "280485", "280485")
Date = c("1/1/2020", "1/2/2020", "1/1/2020", "1/2/2020")
Var1 = c("1", "3", "5", "7")
Var2 = c("2", "4", "6", "8")

df = data.frame(ID, Date, Var1, Var2)
df = df %>% 
  pivot_longer(
    cols = c(Var1, Var2), # 仅对Var1、Var2做转长
    names_to = NULL, # 不保留原变量名(Var1/Var2)的列
    values_to = "Value" # 定义合并后的值列名为Value
  ) %>% 
  arrange(ID, Date) # 如需匹配你给出的预期输出顺序,可加这句排序

运行输出结果

# A tibble: 8 × 3
  ID     Date     Value
  <chr>  <chr>    <chr>
1 279557 1/2/2020 3    
2 279557 1/2/2020 4    
3 280485 1/1/2020 5    
4 280485 1/1/2020 6    
5 280485 1/2/2020 7    
6 280485 1/2/2020 8    
7 297557 1/1/2020 1    
8 297557 1/1/2020 2  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:03