for(i in 2013:2018){ #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=max(dong$dong_pei)) } diwen <- rbind(diwen,one_diwen) }这段代码什么意思
时间: 2024-04-03 08:33:21 浏览: 88
实践题1:Sample-Superstore-Subset-Excel.xlsx
这段代码是一个用 R 语言编写的数据处理代码,主要目的是根据给定的数据集 d,计算每年的低温指数。代码实现的具体过程如下:
1. 对于给定的年份范围(2013~2018),依次进行以下操作:
2. 从数据集 d 中选取当前年份的数据 one;
3. 根据最低温度(TEM_Min)是否小于等于6.5℃,为数据集 one 新增一列 jicha 和 pan_1,分别表示当前温度与6.5℃之间的差距和当前天气是否为低温;
4. 计算当前年份中连续出现低温天气的天数,将结果存储在变量 cut 中;
5. 从数据集 one 中筛选出低温天气的子集 di;
6. 如果当前年份没有低温天气,则将当前年份的低温指数设置为0,否则进行以下操作:
7. 对 di 按照 cut 进行分组,计算每组的平均 jicha 和包含的天数 tian,将结果存储在变量 do 中;
8. 从数据集 do 中筛选出包含至少2天的组 dong;
9. 对 dong 中的每一行进行如下操作:
- 根据 jiwen 的值将当前行分到不同的区间中;
- 根据分到的区间计算当前行的低温指数,将结果存储在 dong_pei 中;
10. 将所有 dong_pei 的最大值作为当前年份的低温指数,并将结果存储在变量 one_diwen 中;
11. 将 one_diwen 添加到 diwen 中,表示当前年份的低温指数已经计算完成;
12. 返回所有年份的低温指数结果。
阅读全文