如何使用R读取*.rtf气象数据文件并转换为按日期分变量的列格式
R处理RTF格式气象JSON数据转规整表格方案
实现步骤
- 第一步:读取RTF并清理文本
你已经用到的striprtf::read_rtf()可以直接提取RTF内的纯文本,只需要额外处理转义字符、多余空白,还原出标准JSON字符串即可。# 加载依赖包 library(striprtf) library(jsonlite) library(dplyr) library(readr) # 替换成你的rtf文件实际路径 file_path <- "你的气象数据.rtf" # 读取并清理文本 raw_json <- read_rtf(file_path) |> paste0(collapse = "") |> gsub(pattern = """, replacement = '"', x = _) |> trimws() - 第二步:解析JSON为结构化数据框
RTF内存储的内容本质是标准JSON数组格式,直接用JSON解析工具就能一键转成行列对应的表格,不需要手动拆分字段。# 解析JSON得到初始数据框 weather_data <- fromJSON(raw_json) - 第三步:修正字段数据类型
解析完的初始数据框所有字段都是字符格式,且数值类字段用逗号作为小数点(西班牙地区数字格式),统一做类型转换即可得到最终可用的规整表格:weather_data <- weather_data |> mutate( # 日期字段转Date类型 fecha = as.Date(fecha), # 所有数值字段替换逗号小数点后转数值类型 across(c(altitud, tmed, prec, tmin, tmax, dir, velmedia, racha, sol, presMax, presMin), ~ parse_number(gsub(",", ".", .x))) )
注意事项
处理超大文件时如果出现内存不足,可以把
fromJSON()替换为jsonlite::stream_in(textConnection(raw_json))做流式解析,内存占用会低很多。如果解析报错,先打印raw_json检查首尾是否缺失JSON数组的方括号,手动补全即可。
内容的提问来源于stack exchange,提问作者Lee1010
相关产品推荐
相关产品推荐

