使用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
相关产品推荐
相关产品推荐

