"library(dplyr)\nlibrary(tools)\nrequire(data.table)\nrequire(rio)\n\n###calculate GDD function\ngdd_calc <- function(T_min, T_max) {\n T_min_ <- T_min\n T_max_ <- T_max\n mint <- ifelse(T_min_ < 10, 10, ifelse(T_min_ > 30, 30, T_min_))\n maxt <- ifelse(T_max_ < 10, 10, ifelse(T_max_ > 30, 30, T_max_))\n gdd <- (mint + maxt) / 2 - 10\n return(gdd)\n}\n\n\n## ------------------------------ one file ---------------------------------------\n#read data\nf1 <- import("E:/trainingdata/wheatOUTfile/75csv/Hebei_bazhou.csv")\n\n#year\ni <- 1981\n\nii <- i+1\n\nf1$day <- as.numeric(f1$day)\n\n#the doy at sowing\na <- filter(f1, year == i, StageName == "sowing")$day\n\nb <- filter(f1, year == ii, StageName == "maturity")$day\n\n\nf2 <- filter(f1, (year == i) & (day >= a))\n\nf3 <- filter(f1, (year == ii) & (day <= b))\n\ndf <- rbind(f2, f3)\n\n\n#df$sowyear <- 1981\n\n\n\nmint <- df$MinT\nmaxt <- df$MaxT\n\ngdd <- gdd_calc(mint, maxt)\n\ndf$GDD <- gdd\n\n###----------------------------------------------------------------------------\n\noutfile <- data.frame()\n\nfor (i in 1981: 2018){\n print(i)\n ii <- i+1\n \n f1$day <- as.numeric(f1$day)\n \n #the doy at sowing\n a <- filter(f1, year == i, StageName == "sowing")$day\n \n b <- filter(f1, year == ii, StageName == "maturity")$day\n \n \n f2 <- filter(f1, (year == i) & (day >= a))\n \n f3 <- filter(f1, (year == ii) & (day <= b))\n \n df <- rbind(f2, f3)\n #df$sowyear <- 1981\n \n mint <- df$MinT\n maxt <- df$MaxT\n \n gdd <- gdd_calc(mint, maxt)\n \n avg_temperature <- mean(df$MaxT, na.rm = TRUE)\n \n \n total_rainfall <-sum(df$Rain, na.rm = TRUE)\n total_GDD<-sum(df$GDD, na.rm = TRUE)\n \n df$total_gdd <- total_GDD\n df$Maxtmean <- avg_temperature\n df$rainfall <- total_rainfall\n outfile <- rbind(outfile, df)\n \n}\n\n将计算结果保存到一个新的CSV文件中,只保存YEAR年生长季的计算结果内容:write.csv(outfile, file = "E:/trainingdata/wheatOUTfile/75csv/Hebei_bazhou_gdd.csv", row.names = FALSE)\n

R语言计算小麦生长季GDD(生长积温)的代码示例

原文地址: https://www.cveoy.top/t/topic/pFOl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录