【发布时间】:2021-03-21 20:46:39
【问题描述】:
我需要你的帮助。
我的函数必须取 Tmin 和 Tmax,然后计算每一天(行)的 gdd=(Tmin+Tmax)/2 和 cumgdd=cumsum(gdd)。 如果 cummgdd21 = 21 如果 cumgdd >395 ,则 Tmin
请在我的代码下方查找。 它只适用第一个条件,所以所有 Tmax>21 都等于 21。
非常感谢。
C.A.
library(dplyr)
climdata= data_frame(j=seq(1,365,by=1), Tmin=runif(min=-3,max=18,n=365),Tmax=runif(min=10,max=39, n=365)
gddcal <- function(climdata,Tmin,Tmax){
gdd=(Tmin+Tmax)/2
cumgdd=cumsum(gdd)
if(cumgdd<=365){
climdata%>%mutate(tmin=ifelse(Tmin<0,0,Tmin),
tmax=ifelse(Tmax>21,21,Tmax),
gdd=(tmin+tmax)/2,
cumgdd=cumsum(gdd)) -> climdata1
}else{
climdata%>%
filter(cumgdd>395)%>%
mutate(tmin=ifelse(Tmin<0,0,Tmin),
tmax=ifelse(Tmax>35,35,Tmax),
gdd=(tmin+tmax)/2,
cumgdd=cumsum(gdd))%>%
bind_rows(climdata1) <- climdata1
}
return(climdata1)
}
【问题讨论】:
标签: r function if-statement dplyr