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

如何导出SPEI计算结果为.xlsx?核心值缺失问题求助

问题分析与解决方案

问题出在你将spei1$fitted转换为data.frame后赋值给spei$values,导致该列是嵌套的data.frame结构,write_xlsx无法正确识别并展开这类嵌套列,最终导出的Excel中缺失SPEI值。

修改后的代码

# 计算PET与气候水平衡
spei$pet <- hargreaves(Tmin = spei$tmin, Tmax = spei$tmax, lat = 51.411843)
cwbal <- spei$precip - spei$pet

# 计算1尺度SPEI
spei1 <- spei(cwbal, scale = 1)

# 将SPEI拟合值转换为普通向量,直接添加到原数据框
spei$spei_values <- as.vector(spei1$fitted)

# 可选:验证行数匹配(确保时间序列无错位)
if (nrow(spei) != length(spei1$fitted)) {
  warning("原数据框行数与SPEI值长度不匹配,请检查时间序列对齐情况")
}

# 导出到Excel
write_xlsx(spei, "spei_df.xlsx")

关键说明

  • spei1$fitted是时间序列(ts)对象,as.vector()会剥离其时间索引,提取纯数值向量,直接赋值给原数据框的新列,避免嵌套结构。
  • 如果需要保留SPEI的时间索引用于验证,可额外添加以下代码:
    # 提取SPEI的时间索引并转为日期格式
    spei$spei_date <- as.Date(time(spei1$fitted))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:45:01