找回密码
 立即注册
查看: 3791|回复: 1

使用R语言计算SPEI和SPI指数结果如何导出?

[复制链接]
发表于 2015-1-1 16:30:30 | 显示全部楼层 |阅读模式
使用R语言中SPEI包计算标准化降雨指数和标准化降雨蒸散指数,得到的指数值格式无法直接数据,例如:使用spei(),时间间隔为一个月,分别得到了每年十二个月的指数值,使用write.csv()函数导出数据是出现错误,请问应该如何将得到的值保存到CSV文件中?
程序如下:
library(lmomco)
library(SPEI)
banan <-read.csv("F:\r34\34ST\banan.csv")
banan$PET <- thornthwaite(banan$TMED,29.38)
spei1 <- spei(banan$PRCP-banan$PET,1)
前五个月的指数(后几个月没显示)为:

spei1
Jan Feb Mar Apr May
1 0.689213518 0.426660486 1.039459575 0.447077818 0.033249345
2 0.882734497 -0.628614940 -0.508390681 -0.632287720 0.468913809
3 -1.652393232 0.982181260 -1.092067688 0.186494758 0.987937345
4 -1.406426634 -1.739752698 -0.358519842 1.271276344 -0.795844339
5 -1.032659684 -0.248165642 0.740889101 -0.762742517 1.283647621
6 -0.388297696 0.094297764 -1.544747273 1.577359439 -0.310431553
7 0.221704538 -0.632614730 0.380616130 -1.484891209 0.948398700
然后保存数据:
write.csv(spei1,file="spei1.csv")
出现错误提醒:
错误于as.data.frame.default(x[], optional = TRUE, stringsAsFactors = stringsAsFactors) :
cannot coerce class ""spei"" to a data.frame
本人也尝试使用别的方法导出数据,如write.table, write.csv,zoo等,但是并没有成功,因为时间序列公式的数据和其他数据格式不一样。最后无奈,只能将数据复制粘贴到txt中,然后转换到CSV文件中,这个过程太繁琐了,请问如何直接将数据保存到CSV中?
非常感谢!
回复

使用道具 举报

 楼主| 发表于 2015-1-2 15:11:28 | 显示全部楼层
终于找到答案了,申明一下答案来自CrabData的热心解答,本人在此表示非常感谢!
上述计算出来的spei1数据不是data frame格式,所以不能单用write.csv或者write.table输出数据,class有attribute,找到相应的属性输出就可以了。例如,要输出spei1,只需要改为 将上述的输出代码改为:
write.csv(spei1$fitted,file="spei.csv")
关于R语言中的class,可以参考一下连接:http://bbs.pinggu.org/thread-1363234-1-1.html
学R语言或者Matlab的朋友们以后可以到下面的网站找答案,或者加Crabdata微信号:crabdata
相关信息:http://c.tieba.baidu.com/home/main/?un=CrabData&fr=frs 或者http://crabdata.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 16:30 , Processed in 0.020263 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表