如何在R中将宽格式降雨数据集转换为指定结构的长表
R语言宽表转长表实现方案
你需要的是将宽格式数据集转换为长格式,属于R中常见的数据规整需求,以下提供两种实现方式:
方法1:使用tidyverse包(推荐,代码更简洁)
# 若未安装包先执行 install.packages("tidyverse") library(tidyverse) final_df <- merged_file %>% # 调整列名匹配输出要求 rename(aez = AEZ, year = Year) %>% # 宽转长处理 pivot_longer( # 选取除aez、year之外的所有列作为待转换列 cols = -c(aez, year), # 原列名存储为day字段 names_to = "day", # 原列值存储为rainfall字段 values_to = "rainfall" )
运行后即可得到你需要的目标结构数据。
方法2:使用基础R函数实现
如果不想安装额外包,可以用基础R自带的reshape函数完成:
final_df <- reshape( merged_file, # 指定所有日期列的位置 varying = 3:ncol(merged_file), # 数值列的新名称 v.names = "rainfall", # 存储原列名的字段名 timevar = "day", # 赋值原日期列名到day字段 times = colnames(merged_file)[3:ncol(merged_file)], direction = "long" ) # 调整列名和列顺序 final_df <- final_df[,c("AEZ","Year","day","rainfall")] colnames(final_df) <- c("aez","year","day","rainfall") # 重置行索引 rownames(final_df) <- NULL
注意
不建议频繁使用attach()函数,容易引发全局变量冲突,使用后建议及时运行detach(merged_file)清理环境。
内容的提问来源于stack exchange,提问作者NJ1
相关产品推荐
相关产品推荐

