- 积分
- 1935
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-10-17
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 红烧小肥羊_ 于 2021-4-12 17:07 编辑
还在使用Rclimdex计算气候指数吗?之前我也用过,但是需要手动输入,并且只能计算单站点,就在今天浏览CRAN时无意间发现有关于气候的包更新啦,真是要感谢R语言包的贡献者和前辈们!
编辑包‘ClimInd’是基于R版本4.1.0,以月,季节性和年度计算的138个标准气候指数。 这些指标是在对极端天气事件和自然灾害领域的文献进行全面审查之后,根据对目标部门的直接和重大影响而选择的。 总体而言,所选指标表征了极端事件发生的频率,强度和持续时间的不同方面,并且来自一系列广泛的气候变量,包括 地表气温,降水,相对湿度,风速,多云,太阳辐射和积雪。 138个指数分类如下:基于温度的指数 (42),基于降水的指数(22),生物气候指数(21),基于风的指数(5),干旱/大陆指数(10),基于雪的指数(13),基于云/辐射的指数(6), 干旱指数(8),火灾指数(5),旅游业指数(5)。这些指标基本上涵盖了所有的极端气候事件指数,需要哪个直接调用函数即可!
简单试了几个函数
- data <- read.table("cmorph2ts.txt")
- names(data) <- c("station", "year", "month", "day", "preci")
- > head(data)
- station year month day preci
- 1 53399 2005 1 1 0.000
- 2 53399 2005 1 2 0.000
- 3 53399 2005 1 3 0.000
- 4 53399 2005 1 4 0.000
- 5 53399 2005 1 5 0.074
- 6 53399 2005 1 6 0.000
- #cdd单站点初尝试-----
- s53399 <- filter(data, station == "53399")
- cdd_53399 <- cdd(s53399$preci,s53399$year)
- > cdd_53399
- 2005 2006 2007 2008 2009
- 86 130 65 88 103
复制代码
平时用到最多的可能就是多站点计算极端事件的指数了,在这里,我也简单试了一下。本来想使用apply家族函数直接应用到每个分组上,无奈对于函数多参数的输入还不是很了解,只简单用了个for循环也能达到我想要的效果,如果有更好的办法,请大家批评指正!
- nam <- unique(data$station)
- cdddata <- c()
- cdd_ <- c()
- for (i in 1:length(datas)) {
- cdd_ <- cdd(datas[[i]]$preci, datas[[i]]$year)
- cdddata <- rbind(cdddata, cdd_)
- }
- row.names(cdddata) <- nam
- > cdddata
- 2005 2006 2007 2008 2009
- 53399 86 130 65 88 103
- 53593 109 90 108 78 105
- 54526 90 86 130 100 100
复制代码 在这里需要注意一下,RClimdex计算的cdd(持续干燥指数)是从当年7月1日~次年6月30日,第一年只计算6月30日以前的日期,而Climlnd则是根据年份正常计算该指标。可根据需要自行调整。
|
|