如何筛选降雨数据集多列数据并生成2019-2020年月度汇总结果
降水数据处理修正方案
原有代码问题
- 未对
quality字段做筛选,混入了无效观测数据,也未过滤2019、2020年的目标时间范围数据 - 需求为计算月度降雨总量,但代码使用
mean计算平均值,统计逻辑不符合要求 - 日期字段为factor类型,直接拆分容易出现格式异常,日期处理方式冗余
- 未实现2019、2020年对应月份的降雨量差值计算
修正后代码(兼容你原有的data.table写法)
library(data.table) library(lubridate) # 读取数据 data <- fread("rain_file.csv", header=TRUE, sep=",", fill=TRUE, quote="\"") # 数据清洗:筛选有效记录、提取年月、过滤目标年份 data_clean <- data[quality == "Good", ] # 保留quality为Good的有效记录 data_clean[, date := ymd(date)] # 转为标准日期格式 data_clean[, `:=`( year = year(date), month = month(date) )] data_clean <- data_clean[year %in% c(2019, 2020), ] # 仅保留2019、2020年的目标数据 # 计算月度降雨总量 m_rain_dt <- data_clean[, .(month_rain = sum(amount_rain, na.rm = TRUE)), by = .(year, month)] # 转换为宽表计算两年对应月份差值 m_rain_wide <- dcast(m_rain_dt, month ~ year, value.var = "month_rain") setnames(m_rain_wide, c("month", "2019_rain", "2020_rain")) m_rain_wide[, diff_2020_2019 := `2020_rain` - `2019_rain`] # 输出结果表格 print(m_rain_wide)
输出结果示例
| 月份 | 2019年降雨量 | 2020年降雨量 | 2020年较2019年差值 |
|---|---|---|---|
| 1 | 22.3 | 19.7 | -2.6 |
| 2 | 38.1 | 45.2 | 7.1 |
| 3 | 72.6 | 68.9 | -3.7 |
| ... | ... | ... | ... |
内容的提问来源于stack exchange,提问作者Adel Jabbari
相关产品推荐
相关产品推荐

