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

在R中将逐日降雨数据转换为年月-日行列结构

解决逐日降雨数据的宽格式转换问题

你的原代码问题出在split的逻辑上:cumsum(strftime(dat$Date, '%Y%m'))会把字符型的年月转成NA,导致分组完全错误。用tidyverse的pivot_wider可以轻松实现你要的格式,步骤如下:

# 加载必要包(tidyverse已包含dplyr和lubridate,无需重复加载)
library(tidyverse)

# 读取并处理数据
dat <- read.csv('RF.csv')
dat$Date <- as.Date(as.factor(dat$Date), format='%Y%m%d')

# 提取年-月标识和日期字段
dat_processed <- dat %>%
  mutate(
    year_month = format(Date, "%Y-%m"), # 生成如"1981-01"的行标识
    day = day(Date) # 提取1-31的日期作为列名
  )

# 转换为目标宽格式
new_data <- dat_processed %>%
  pivot_wider(
    id_cols = year_month, # 按年-月分组作为行
    names_from = day,     # 用日期作为列名
    values_from = RF      # 填充降雨量数据
  )

# 可选:将年-月设置为行名(去掉单独的year_month列)
rownames(new_data) <- new_data$year_month
new_data <- new_data %>% select(-year_month)

转换后的结果会和你预期的一致:每一行对应一个「年-月」,列是1到31日,对应日期的降雨量自动填充,无数据的日期(如二月的30、31日)会显示为NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:37:17