for(i in 2013:2022){ #i=2009 one=subset(d,Year==i) #one <- d one$jicha <- ifelse(one$TEM_Min<=6.5,6.5-one$TEM_Min,0) one$pan_1 <- ifelse(one$TEM_Min<=6.5,"低温","无") one$cut <- cumsum(one$pan_1!=c("NONE",one$pan_1[-nrow(one)])) di <- subset(one,pan_1=="低温") if(nrow(di)==0){ one_diwen=data.frame(Year=i,diwenpei=0) }else{ do <- ddply(di,"cut",summarise,jiwen=sum(jicha),tian=sum(cut>0)) dong <- subset(do,tian>=2) if(nrow(dong)==0){ one_diwen=data.frame(Year=i,diwenpei=0) }else{ dong$cut <- cut(dong$jiwen,c(0,15,25,35,Inf),right = F) for (x in 1:nrow(dong)) { dong$dong_pei[x] <- switch(as.integer(dong$cut[x]), (dong$jiwen[x]-0)*0.04+2, (dong$jiwen[x]-15)*0.3+2.6, (dong$jiwen[x]-25)*1+5.6, (dong$jiwen[x]-35)*3+15.6) } } one_diwen=data.frame(Year=i,diwenpei=sum(dong$dong_pei)) } diwen <- rbind(diwen,one_diwen) }这段代码是什么意思
时间: 2024-04-04 21:33:57 浏览: 70
实践题1:Sample-Superstore-Subset-Excel.xlsx
这段代码是用来计算2013年到2022年每年的低温指数的。具体来说,代码中的步骤如下:
1. 对于每一年的数据,筛选出温度低于等于6.5摄氏度的数据,并计算每个数据点的低温指数(jicha),并将低温指数小于0的设为0。
2. 对于每个数据点,判断其是否为低温,如果是,则在新的一列(pan_1)中标记为“低温”,否则标记为“无”。
3. 对于每个数据点,使用cumsum函数计算一个新列(cut),表示截止到该数据点,之前有多少个低温天数。
4. 对于每个年份的数据,从所有低温数据中筛选出低温天数大于等于2的连续低温天数段。
5. 对于每个选定的低温天数段,计算其低温指数之和(jiwen)和天数(tian)。
6. 根据低温指数之和(jiwen),将所有低温天数段划分为不同的档次(cut),并计算每个档次的低温指数系数。
7. 对于每个低温天数段,根据低温指数系数(dong_pei)计算其低温指数积分值。
8. 对于每个年份,将所有低温指数积分值相加,得到该年份的低温指数总值(diwenpei)。
9. 将每个年份的低温指数总值存储在一个名为diwen的数据框中。
总之,该段代码是用来计算每年的低温指数,以评估对作物的影响。
阅读全文