如何使用R的riem包批量下载多机场气象数据并单独存储为CSV文件
R 批量下载多机场气象数据解决方案
完整修改后可运行代码
# 提前确认已安装riem、readxl包再加载 library(riem) library(readxl) # 定义全局共用的起止日期,按需修改即可 start_date <- "2020-01-01" end_date <- "2020-01-04" # 读取站点列表(原有逻辑保留) stations <- read_excel("~/Desktop/R WD/Reference Files/stations.xlsx", col_names = FALSE) # 提取第一列的所有站点代码为向量,若站点存在其他列,修改括号内的列序号即可 station_codes <- stations[[1]] # 循环遍历每个站点执行下载保存 for (x in station_codes) { # 下载当前站点的气象数据 METAR <- riem_measures(station = x, date_start = start_date, date_end = end_date) # 生成带.csv后缀的标准文件名 file_name <- paste0(x, "_METAR.csv") # 保存为CSV文件,去掉多余的行号列,缺失值留空更适配日常使用 write.csv(METAR, file = file_name, row.names = FALSE, na = "") # 可选:打印进度,实时查看执行状态 message("已完成站点:", x, "的下载与保存") }
关键逻辑说明
- 你导入的
stations是数据框结构,stations[[1]]就是提取第一列的所有四字符站点编码,生成可供循环调用的字符向量 - for循环会依次把
station_codes里的每个站点编码赋值给变量x,重复运行大括号内的下载、保存逻辑,自动为每个站点生成独立文件 - 优化可选方案:如果担心个别站点不存在/网络异常导致程序中断,可以用
try包裹执行逻辑,跳过报错站点继续运行:for (x in station_codes) { try({ METAR <- riem_measures(station = x, date_start = start_date, date_end = end_date) write.csv(METAR, file = paste0(x, "_METAR.csv"), row.names = FALSE) message("已完成站点:", x) }) }
内容的提问来源于stack exchange,提问作者Ryan Thomas
相关产品推荐
相关产品推荐

