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

