由于没有R软件包,我有一个关于创建自己的函数来计算SAPEI指数的问题-s标准化aintecedentp降水量e蒸散量index(“A standardized index for assessing sub-monthly compound dry and hot conditions with application in China”by Li et al.,2021)。据我所知,要计算SAPEI指数,我需要首先计算每个日历日的降水量和PET(如3个月尺度)之间的累积日差。
计算公式如下:
我所做的:
WSD <- function(P, PET, n){
wat_bal <- P - PET
for(i in (n+1):length(wat_bal)){
condition = ifelse(wat_bal > 0, "wet", "dry")
return(data.frame(wat_bal, condition))
}
}
不幸的是,我没有得到预期的结果。我知道我的功能还没有完成,但我也不知道如何继续下去。特别是 n(前几天的数量)是一个问题。有人能帮我吗?
非常感谢你提前法比安
4条答案
按热度按时间y1aodyip1#
@MikkoMarttila不幸的是,cumsum()函数没有工作,只是每天累积值。也许我会引用这篇文章的一部分:“[.]计算了降水量和潜在蒸散量之间的日差,以估计水量平衡。为了反映给定日期的干和湿条件,通过以下等式计算前期水盈余或赤字(WSD):(见上文),其中n是先前天数,PET代表潜在蒸散量,P代表降水量。WSD值可以在不同的时间尺度上聚合,例如3个月、6个月、9个月等。[...]”(Li等人,2021年)。
qltillow2#
根据你对算法的描述,听起来你可以这样做:
vcirk6k63#
这可能是解决方案:
?
3pmvbmvn4#
您可以使用
filter()
函数来实现这一点。除了做你想做的事情之外,它还可以根据与要计算的值的距离将权重(上面示例中的所有1都是为了求和)应用到过滤器,这在水平衡研究中是典型的,所以这个函数可能对你更感兴趣。