Description of the Shiny applications indicators
1. Crop Failures count table
.get_indicator_table_fails
#> function (simdata, kc_seqs)
#> {
#> fails_crop1 <- .get_fails(1, simdata, kc_seqs[[1]])
#> fails_crop2 <- .get_fails(2, simdata, kc_seqs[[2]])
#> fails_crop3 <- .get_fails(3, simdata, kc_seqs[[3]])
#> fails_crop4 <- .get_fails(4, simdata, kc_seqs[[4]])
#> fails_farm <- data.frame(Fail_Number = (fails_crop1$Fail_Number +
#> fails_crop2$Fail_Number + fails_crop3$Fail_Number + fails_crop4$Fail_Number),
#> Total_Crops = (fails_crop1$Total_Crops + fails_crop2$Total_Crops +
#> fails_crop3$Total_Crops + fails_crop4$Total_Crops),
#> Failed_Crops = NA)
#> Fails <- rbind(Farm = fails_farm, fails_crop1, fails_crop2,
#> fails_crop3, fails_crop4)
#> Fails$"%" <- Fails$Fail_Number/Fails$Total_Crops * 100
#> return(Fails[, c(1, 2, 4, 3)])
#> }
#>
DT::datatable({.get_fails(plot_index, simdata, kc_seq)})
.get_fails
#> function (plot_index, simdata, kc_seq)
#> {
#> fail_number <- tail(simdata[, paste0("top,FarmModel,Plot_",
#> plot_index, ":ClimaticWaterDemand.Failure_counter")],
#> 1)
#> is_failure <- .get_plot_var(plot_index, simdata, "ClimaticWaterDemand",
#> "Is_Failure")
#> kcb_cropindex_list <- .get_kcb_cropindex_list(plot_index,
#> simdata, kc_seq)
#> cropnames <- kcb_cropindex_list$cropname_seq
#> if (fail_number > 0) {
#> failed_crops <- paste(cropnames[kcb_cropindex_list$cropindex[(c(is_failure[-1],
#> 0) > 0)][-2]], collapse = ", ")
#> }
#> else {
#> failed_crops <- NA
#> }
#> return(data.frame(Fail_Number = fail_number, Total_Crops = length(cropnames),
#> Failed_Crops = failed_crops, row.names = paste0("Plot_",
#> plot_index)))
#> }
#>
2. Crop stress boxplots

.get_indicator_boxplot_stress
#> function (simdata, kc_seqs, kcb_cropindexes)
#> {
#> return(rbind(.get_stress(1, simdata, kcb_cropindexes[[1]]),
#> .get_stress(2, simdata, kcb_cropindexes[[2]]), .get_stress(3,
#> simdata, kcb_cropindexes[[3]]), .get_stress(4, simdata,
#> kcb_cropindexes[[4]])))
#> }
#>
DT::datatable({.get_stress(1, simdata, kcb_cropindexes[[1]])})
.get_stress
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> stress_crop <- .get_plot_var(plot_index, simdata, "WaterFlows",
#> "stress_index")
#> return(data.frame(stress = stress_crop[kcb_cropindex$cropindex >
#> 0], cropindex = paste0("Plot_", plot_index, ".", kcb_cropindex$cropname[kcb_cropindex$cropindex >
#> 0])))
#> }
#>
3. Crop stress summary table
.get_indicator_table_stress
#> function (simdata, kc_seqs, kcb_cropindexes)
#> {
#> meanstress_crop1 <- .get_meanstress(1, simdata, kcb_cropindexes[[1]])
#> meanstress_crop2 <- .get_meanstress(2, simdata, kcb_cropindexes[[2]])
#> meanstress_crop3 <- .get_meanstress(3, simdata, kcb_cropindexes[[3]])
#> meanstress_crop4 <- .get_meanstress(4, simdata, kcb_cropindexes[[4]])
#> Stress <- c(meanstress_crop1, meanstress_crop2, meanstress_crop3,
#> meanstress_crop4)
#> Stress_cropindex <- c(rep(1, length(meanstress_crop1)), rep(2,
#> length(meanstress_crop2)), rep(3, length(meanstress_crop3)),
#> rep(4, length(meanstress_crop4)))
#> names(Stress) <- paste0("Plot_", Stress_cropindex, ".", names(Stress))
#> return(as.data.frame(do.call("rbind", Stress)))
#> }
#>
.get_meanstress(plot_index, simdata, kcb_cropindex)
#> $ex1
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 0.000118 0.002364 0.274517 0.479417 1.000000 1.000000
#>
#> $ex2
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 0.00332 0.06095 0.13808 0.21884 0.26152 1.00000
.get_meanstress
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> stress_crop <- .get_plot_var(plot_index, simdata, "WaterFlows",
#> "stress_index")
#> meanstress_crop <- by(stress_crop, as.factor(kcb_cropindex$cropindex),
#> summary)
#> meanstress_crop <- meanstress_crop[-1]
#> names(meanstress_crop) <- kcb_cropindex$cropname_seq
#> return(meanstress_crop)
#> }
#>
4. Crop yield table
.get_indicator_table_yield
#> function (simdata, plot_areas, kcb_cropindexes)
#> {
#> finalyield_crop1 <- .get_finalyield(1, simdata, kcb_cropindexes[[1]])
#> finalyield_crop2 <- .get_finalyield(2, simdata, kcb_cropindexes[[2]])
#> finalyield_crop3 <- .get_finalyield(3, simdata, kcb_cropindexes[[3]])
#> finalyield_crop4 <- .get_finalyield(4, simdata, kcb_cropindexes[[4]])
#> FinalYield <- c(finalyield_crop1, finalyield_crop2, finalyield_crop3,
#> finalyield_crop4)
#> FinalYield_x_PlotArea <- c(finalyield_crop1 * plot_areas[[1]],
#> finalyield_crop2 * plot_areas[[2]], finalyield_crop3 *
#> plot_areas[[3]], finalyield_crop4 * plot_areas[[4]])/10000
#> FinalYield_cropindex <- c(rep(1, length(finalyield_crop1)),
#> rep(2, length(finalyield_crop2)), rep(3, length(finalyield_crop3)),
#> rep(4, length(finalyield_crop4)))
#> names(FinalYield) <- paste0("Plot_", FinalYield_cropindex,
#> ".", names(FinalYield))
#> return(data.frame(FinalYield, FinalYield_x_PlotArea, row.names = make.names(names(FinalYield),
#> unique = TRUE)))
#> }
#>
DT::datatable({data.frame(t(.get_finalyield(plot_index, simdata, kcb_cropindex)))})
.get_finalyield
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> yield_crop <- .get_plot_var(plot_index, simdata, "Yield",
#> "Yield")
#> failure_crop <- .get_plot_var(plot_index, simdata, "ClimaticWaterDemand",
#> "Is_Failure")
#> finalyield_crop <- as.numeric(as.character(as.factor(by(yield_crop,
#> as.factor(kcb_cropindex$cropindex), tail, n = 1))[-1]))
#> finalfailure_crop <- as.numeric(as.character(as.factor(by(failure_crop,
#> as.factor(c(0, head(kcb_cropindex$cropindex, n = -1))),
#> tail, n = 1))[-1]))
#> finalyield_crop <- ifelse(finalfailure_crop, NA, finalyield_crop)
#> names(finalyield_crop) <- kcb_cropindex$cropname_seq
#> return(finalyield_crop)
#> }
#>
5. Crop days without water count table
.get_indicator_table_dayswowater
#> function (simdata, kcb_cropindexes)
#> {
#> sumdayswowater_crop1 <- .get_sumdayswowater(1, simdata, kcb_cropindexes[[1]])
#> sumdayswowater_crop2 <- .get_sumdayswowater(2, simdata, kcb_cropindexes[[2]])
#> sumdayswowater_crop3 <- .get_sumdayswowater(3, simdata, kcb_cropindexes[[3]])
#> sumdayswowater_crop4 <- .get_sumdayswowater(4, simdata, kcb_cropindexes[[4]])
#> Sumdayswowater <- cbind(sumdayswowater_crop1, sumdayswowater_crop2,
#> sumdayswowater_crop3, sumdayswowater_crop4)
#> sumdayswowater_cropindex <- c(rep(1, ncol(sumdayswowater_crop1)),
#> rep(2, ncol(sumdayswowater_crop2)), rep(3, ncol(sumdayswowater_crop3)),
#> rep(4, ncol(sumdayswowater_crop4)))
#> colnames(Sumdayswowater) <- paste0("Plot_", sumdayswowater_cropindex,
#> ".", colnames(Sumdayswowater))
#> restable <- data.frame(t(cbind(Farm = rowSums(Sumdayswowater,
#> na.rm = TRUE), Plot_1 = rowSums(sumdayswowater_crop1,
#> na.rm = TRUE), Plot_2 = rowSums(sumdayswowater_crop2,
#> na.rm = TRUE), Plot_3 = rowSums(sumdayswowater_crop3,
#> na.rm = TRUE), Plot_4 = rowSums(sumdayswowater_crop4,
#> na.rm = TRUE), Sumdayswowater)))
#> colnames(restable) <- c("Total Days w/o Water", "Crop Cycle_Duration",
#> "Max Consecutive Days w/o Water", "Total Days Irrigation Demand")
#> restable$"Max Consecutive Days w/o Water"[1] <- max(restable$"Max Consecutive Days w/o Water"[-1])
#> return(restable)
#> }
#>
DT::datatable({.get_sumdayswowater(plot_index, simdata, kcb_cropindex)})
.get_sumdayswowater
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> dayssowing_crop <- .get_plot_var(plot_index, simdata, "ClimaticWaterDemand",
#> "Days_Since_Sowing")
#> failure_crop <- .get_plot_var(plot_index, simdata, "ClimaticWaterDemand",
#> "Is_Failure")
#> finaldayssowing_crop <- as.numeric(as.character(as.factor(by(dayssowing_crop,
#> as.factor(kcb_cropindex$cropindex), tail, n = 1))[-1]))
#> seqdayswowater <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.Days_Without_Irrigation_",
#> plot_index)])
#> maxseqdays_crop <- as.numeric(as.character(as.factor(by(seqdayswowater,
#> as.factor(kcb_cropindex$cropindex), max))[-1]))
#> dayswowater_crop <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.Is_Day_Without_Irrigation_",
#> plot_index)])
#> sumdayswowater_crop <- as.numeric(as.character(as.factor(by(dayswowater_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> names(sumdayswowater_crop) <- kcb_cropindex$cropname_seq
#> daysIrrigDemand_crop <- as.vector(simdata[, paste0("top,FarmModel,Plot_",
#> plot_index, ":IrrigationDemand.IrrigationDemand")] >
#> 0)
#> sumIrrigDemand_crop <- as.numeric(as.character(as.factor(by(daysIrrigDemand_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> names(sumIrrigDemand_crop) <- kcb_cropindex$cropname_seq
#> return(rbind(sumdayswowater_crop, finaldayssowing_crop, maxseqdays_crop,
#> sumIrrigDemand_crop))
#> }
#>
6. Irrigation volumes table
.get_indicator_table_irrigvol
#> function (simdata, kcb_cropindexes, plot_areas)
#> {
#> sumirrigvol_crop1 <- .get_sumirrigvol(1, simdata, kcb_cropindexes[[1]],
#> plot_areas[[1]])
#> sumirrigvol_crop2 <- .get_sumirrigvol(2, simdata, kcb_cropindexes[[2]],
#> plot_areas[[2]])
#> sumirrigvol_crop3 <- .get_sumirrigvol(3, simdata, kcb_cropindexes[[3]],
#> plot_areas[[3]])
#> sumirrigvol_crop4 <- .get_sumirrigvol(4, simdata, kcb_cropindexes[[4]],
#> plot_areas[[4]])
#> Sumirrigvol <- cbind(sumirrigvol_crop1, sumirrigvol_crop2,
#> sumirrigvol_crop3, sumirrigvol_crop4)
#> sumirrigvol_cropindex <- c(rep(1, ncol(sumirrigvol_crop1)),
#> rep(2, ncol(sumirrigvol_crop2)), rep(3, ncol(sumirrigvol_crop3)),
#> rep(4, ncol(sumirrigvol_crop4)))
#> colnames(Sumirrigvol) <- paste0("Plot_", sumirrigvol_cropindex,
#> ".", colnames(Sumirrigvol))
#> restable <- data.frame(t(cbind(Farm = rowSums(Sumirrigvol,
#> na.rm = TRUE), Plot_1 = rowSums(sumirrigvol_crop1, na.rm = TRUE),
#> Plot_2 = rowSums(sumirrigvol_crop2, na.rm = TRUE), Plot_3 = rowSums(sumirrigvol_crop3,
#> na.rm = TRUE), Plot_4 = rowSums(sumirrigvol_crop4,
#> na.rm = TRUE), Sumirrigvol)))
#> colnames(restable) <- c("Irrigation Amounts (m3)", "from Pump (%)",
#> "from Pond (%)", "Irrigation Demand Amounts (m3)")
#> vols1 <- rowSums(sweep(sumirrigvol_crop1[-c(1, 4), ], MARGIN = 2,
#> sumirrigvol_crop1[1, ], `*`)/100, na.rm = TRUE)
#> vols2 <- rowSums(sweep(sumirrigvol_crop2[-c(1, 4), ], MARGIN = 2,
#> sumirrigvol_crop2[1, ], `*`)/100, na.rm = TRUE)
#> vols3 <- rowSums(sweep(sumirrigvol_crop3[-c(1, 4), ], MARGIN = 2,
#> sumirrigvol_crop3[1, ], `*`)/100, na.rm = TRUE)
#> vols4 <- rowSums(sweep(sumirrigvol_crop4[-c(1, 4), ], MARGIN = 2,
#> sumirrigvol_crop4[1, ], `*`)/100, na.rm = TRUE)
#> restable[2:5, -c(1, 4)] <- rbind(vols1/sum(vols1, na.rm = TRUE) *
#> 100, vols2/sum(vols2, na.rm = TRUE) * 100, vols3/sum(vols3,
#> na.rm = TRUE) * 100, vols4/sum(vols4, na.rm = TRUE) *
#> 100)
#> restable[1, -c(1, 4)] <- colSums(sweep(restable[2:5, -c(1,
#> 4)], MARGIN = 1, restable[2:5, 1], `*`)/100, na.rm = TRUE)/restable[1,
#> 1] * 100
#> return(restable)
#> }
#>
DT::datatable({.get_sumirrigvol(plot_index, simdata, kcb_cropindex, Plot_Areas$Plot_Areas[[plot_index]])})
.get_sumirrigvol
#> function (plot_index, simdata, kcb_cropindex, plot_area)
#> {
#> irrigvol_crop <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.IrrigationAmount_",
#> plot_index)])
#> sumirrigvol_crop <- as.numeric(as.character(as.factor(by(irrigvol_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> pumpextraction_crop <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.PumpExtraction_",
#> plot_index)])
#> sumpumpextraction_crop <- as.numeric(as.character(as.factor(by(pumpextraction_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> pondextraction_crop <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.PondExtraction_",
#> plot_index)])
#> sumpondextraction_crop <- as.numeric(as.character(as.factor(by(pondextraction_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> irrigDemandvol_crop <- as.vector(.convert_mm_to_m3(simdata[,
#> paste0("top,FarmModel,Plot_", plot_index, ":IrrigationDemand.IrrigationDemand")],
#> plot_area))
#> sumirrigDemandvol_crop <- as.numeric(as.character(as.factor(by(irrigDemandvol_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> names(sumirrigvol_crop) <- kcb_cropindex$cropname_seq
#> return(rbind(sumirrigvol_crop, sumpumpextraction_crop/sumirrigvol_crop *
#> 100, sumpondextraction_crop/sumirrigvol_crop * 100, sumirrigDemandvol_crop))
#> }
#>
7. Irrigation timeline
(irrigvol_crop <- rbind(.get_irrigvol_timeline(1, simdata),
.get_irrigvol_timeline(2, simdata),
.get_irrigvol_timeline(3, simdata),
.get_irrigvol_timeline(4, simdata),
.get_watercycles_timeline(simdata)));
#> start end content group subgroup
#> 1 2014-03-02 <NA> 25 m<sup>3</sup> 1 1
#> 2 2014-03-03 <NA> 25 m<sup>3</sup> 1 1
#> 3 2014-03-04 <NA> 25 m<sup>3</sup> 1 1
#> 4 2014-03-05 <NA> 25 m<sup>3</sup> 1 1
#> 5 2014-03-08 <NA> 25 m<sup>3</sup> 1 1
#> 6 2014-03-09 <NA> 25 m<sup>3</sup> 1 1
#> 7 2014-03-10 <NA> 25 m<sup>3</sup> 1 1
#> 8 2014-03-11 <NA> 25 m<sup>3</sup> 1 1
#> 9 2014-03-12 <NA> 25 m<sup>3</sup> 1 1
#> 10 2014-03-13 <NA> 25 m<sup>3</sup> 1 1
#> 11 2014-03-14 <NA> 25 m<sup>3</sup> 1 1
#> 12 2014-03-02 <NA> 25 m<sup>3</sup> 2 1
#> 13 2014-03-03 <NA> 25 m<sup>3</sup> 2 1
#> 14 2014-03-08 <NA> 25 m<sup>3</sup> 2 1
#> 15 2014-03-09 <NA> 25 m<sup>3</sup> 2 1
#> 16 2014-03-10 <NA> 25 m<sup>3</sup> 2 1
#> 17 2014-03-11 <NA> 25 m<sup>3</sup> 2 1
#> 18 2014-03-12 <NA> 25 m<sup>3</sup> 2 1
#> 19 2014-03-02 <NA> 25 m<sup>3</sup> 3 1
#> 20 2014-03-03 <NA> 25 m<sup>3</sup> 3 1
#> 21 2014-03-08 <NA> 25 m<sup>3</sup> 3 1
#> 22 2014-03-09 <NA> 25 m<sup>3</sup> 3 1
#> 23 2014-03-10 <NA> 25 m<sup>3</sup> 3 1
#> 24 2014-03-12 <NA> 25 m<sup>3</sup> 3 1
#> 25 2014-03-02 <NA> 25 m<sup>3</sup> 4 1
#> 26 2014-03-03 <NA> 25 m<sup>3</sup> 4 1
#> 27 2014-03-08 <NA> 25 m<sup>3</sup> 4 1
#> 28 2014-03-09 <NA> 25 m<sup>3</sup> 4 1
#> 29 2014-03-12 <NA> 25 m<sup>3</sup> 4 1
#> 30 2014-03-10 2014-03-12 2 days<br>~67 m<sup>3</sup> 3 2
#> 31 2014-03-12 2014-03-14 2 days<br>~65 m<sup>3</sup> 4 2
timevis(irrigvol_crop, groups = data.frame(id = 1:4, content = paste0("Plot_", 1:4)), options = list(stack=FALSE, stackSubgroups=FALSE))
DT::datatable({.get_irrigvol_timeline(1, simdata)})
.get_irrigvol_timeline
#> function (plot_index, simdata)
#> {
#> dates_str <- simdata$"top:MeteoReader.current_date_str"
#> irrigvol_crop <- as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.IrrigationAmount_",
#> plot_index)])
#> irrigvol_timeline <- NULL
#> if (sum(irrigvol_crop > 0) > 0) {
#> irrigvol_timeline <- data.frame(start = dates_str[irrigvol_crop >
#> 0], end = NA, content = paste(irrigvol_crop[irrigvol_crop >
#> 0], "m
3"), group = plot_index, subgroup = 1,
#> stringsAsFactors = FALSE)
#> }
#> return(irrigvol_timeline)
#> }
#>
DT::datatable({.get_watercycles_timeline(simdata)})
.get_watercycles_timeline
#> function (simdata)
#> {
#> WC_duration <- as.vector(simdata[, "top,FarmModel,IrrigationManager:FarmIrrigationManager.WaterCycle_Duration"])
#> WC_startindex <- which(diff(sign(diff(WC_duration))) == -2) +
#> 1
#> dates_str <- simdata$"top:MeteoReader.current_date_str"[WC_startindex]
#> WC_plotindex <- as.vector(simdata[WC_startindex, "top,FarmModel,IrrigationManager:FarmIrrigationManager.WaterCycle_CurrentPlot"] +
#> 1)
#> WC_currentdose <- as.vector(simdata[WC_startindex, "top,FarmModel,IrrigationManager:FarmIrrigationManager.WaterCycle_CurrentDose"])
#> simdata$dates <- dates(simdata$"top:MeteoReader.current_date_str",
#> format = c(dates = "y-m-d"))
#> WC_timeline <- NULL
#> if (sum(WC_duration) > 0) {
#> WC_timeline <- data.frame(start = dates_str, end = as.character(as.Date(as.character(simdata$dates[WC_startindex] +
#> WC_duration[WC_startindex] + 1), format = "%m/%d/%y")),
#> content = paste0(WC_duration[WC_startindex] + 1,
#> " days
~", round(WC_currentdose), " m3"),
#> group = WC_plotindex, subgroup = 2, stringsAsFactors = FALSE)
#> }
#> return(WC_timeline)
#> }
#>
8. Water Use Efficiency (WUE) - Irrigation
.get_indicator_table_wue_irrig
#> function (simdata, kcb_cropindexes)
#> {
#> wue_irrig_crop1 <- .get_wue_irrig(1, simdata, kcb_cropindexes[[1]])
#> wue_irrig_crop2 <- .get_wue_irrig(2, simdata, kcb_cropindexes[[2]])
#> wue_irrig_crop3 <- .get_wue_irrig(3, simdata, kcb_cropindexes[[3]])
#> wue_irrig_crop4 <- .get_wue_irrig(4, simdata, kcb_cropindexes[[4]])
#> Wue_irrig <- c(wue_irrig_crop1, wue_irrig_crop2, wue_irrig_crop3,
#> wue_irrig_crop4)
#> wue_irrig_cropindex <- c(rep(1, length(wue_irrig_crop1)),
#> rep(2, length(wue_irrig_crop2)), rep(3, length(wue_irrig_crop3)),
#> rep(4, length(wue_irrig_crop4)))
#> names(Wue_irrig) <- paste0("Plot_", wue_irrig_cropindex,
#> ".", names(Wue_irrig))
#> return(data.frame(WUE_Irrigation = Wue_irrig, row.names = make.names(names(Wue_irrig),
#> unique = TRUE)))
#> }
#>
DT::datatable({data.frame(t(.get_wue_irrig(plot_index, simdata, kcb_cropindex)))})
.get_wue_irrig
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> ActualTransp_crop <- as.vector(simdata[, paste0("top,FarmModel,Plot_",
#> plot_index, ":WaterFlows.Actual_transp")])
#> sumAT_crop <- as.numeric(as.character(as.factor(by(ActualTransp_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> RainIrrig_crop <- as.vector(simdata[, "top:MeteoReader.Rain"]) +
#> as.vector(simdata[, paste0("top,FarmModel,IrrigationManager:FarmIrrigationManager.Irrigation_",
#> plot_index)])
#> sumRainIrrig_crop <- as.numeric(as.character(as.factor(by(RainIrrig_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> wue_irrig_crop <- sumAT_crop/sumRainIrrig_crop
#> names(wue_irrig_crop) <- kcb_cropindex$cropname_seq
#> return(wue_irrig_crop)
#> }
#>
9. Water Use Efficiency (WUE) - Crop
.get_indicator_table_wue_crop
#> function (simdata, kcb_cropindexes)
#> {
#> wue_crop_crop1 <- .get_wue_crop(1, simdata, kcb_cropindexes[[1]])
#> wue_crop_crop2 <- .get_wue_crop(2, simdata, kcb_cropindexes[[2]])
#> wue_crop_crop3 <- .get_wue_crop(3, simdata, kcb_cropindexes[[3]])
#> wue_crop_crop4 <- .get_wue_crop(4, simdata, kcb_cropindexes[[4]])
#> Wue_crop <- c(wue_crop_crop1, wue_crop_crop2, wue_crop_crop3,
#> wue_crop_crop4)
#> wue_crop_cropindex <- c(rep(1, length(wue_crop_crop1)), rep(2,
#> length(wue_crop_crop2)), rep(3, length(wue_crop_crop3)),
#> rep(4, length(wue_crop_crop4)))
#> names(Wue_crop) <- paste0("Plot_", wue_crop_cropindex, ".",
#> names(Wue_crop))
#> return(data.frame(Wue_crop = Wue_crop, row.names = make.names(names(Wue_crop),
#> unique = TRUE)))
#> }
#>
DT::datatable({data.frame(t(.get_wue_crop(plot_index, simdata, kcb_cropindex)))})
.get_wue_crop
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> ActualETR_crop <- as.vector(simdata[, paste0("top,FarmModel,Plot_",
#> plot_index, ":WaterFlows.Actual_transp")]) + as.vector(simdata[,
#> paste0("top,FarmModel,Plot_", plot_index, ":WaterFlows.Actual_evap")])
#> sumETR_crop <- as.numeric(as.character(as.factor(by(ActualETR_crop,
#> as.factor(kcb_cropindex$cropindex), sum))[-1]))
#> Yield_crop <- .get_finalyield(plot_index, simdata, kcb_cropindex)
#> wue_crop <- Yield_crop/sumETR_crop
#> names(wue_crop) <- kcb_cropindex$cropname_seq
#> return(wue_crop)
#> }
#>
DT::datatable({data.frame(t(.get_finalyield(plot_index, simdata, kcb_cropindex)))})
.get_finalyield
#> function (plot_index, simdata, kcb_cropindex)
#> {
#> yield_crop <- .get_plot_var(plot_index, simdata, "Yield",
#> "Yield")
#> failure_crop <- .get_plot_var(plot_index, simdata, "ClimaticWaterDemand",
#> "Is_Failure")
#> finalyield_crop <- as.numeric(as.character(as.factor(by(yield_crop,
#> as.factor(kcb_cropindex$cropindex), tail, n = 1))[-1]))
#> finalfailure_crop <- as.numeric(as.character(as.factor(by(failure_crop,
#> as.factor(c(0, head(kcb_cropindex$cropindex, n = -1))),
#> tail, n = 1))[-1]))
#> finalyield_crop <- ifelse(finalfailure_crop, NA, finalyield_crop)
#> names(finalyield_crop) <- kcb_cropindex$cropname_seq
#> return(finalyield_crop)
#> }
#>
10. Water Use Efficiency (WUE) - Environment
.get_indicator_table_wue_env
#> function (simdata)
#> {
#> years_index <- as.factor(as.numeric(as.character(years(simdata$dates))) -
#> as.numeric(months(simdata$dates, abbreviate = TRUE) <
#> "Apr"))
#> Rain_crop <- as.vector(simdata[, "top:MeteoReader.Rain"])
#> ET0_crop <- as.vector(simdata[, "top:MeteoReader.ETP"])
#> mean_Rain <- mean(Rain_crop, na.rm = TRUE)
#> mean_ET0 <- mean(ET0_crop, na.rm = TRUE)
#> Budyko <- sqrt((1 - exp(-mean_ET0/mean_Rain) * mean_ET0/mean_Rain/tanh(mean_ET0/mean_Rain)))
#> mean_Rain_year <- as.numeric(as.character(as.factor(by(Rain_crop,
#> years_index, mean))))
#> wue_env_plot1 <- .get_wue_env(1, simdata, years_index, mean_Rain_year,
#> Budyko)
#> wue_env_plot2 <- .get_wue_env(2, simdata, years_index, mean_Rain_year,
#> Budyko)
#> wue_env_plot3 <- .get_wue_env(3, simdata, years_index, mean_Rain_year,
#> Budyko)
#> wue_env_plot4 <- .get_wue_env(4, simdata, years_index, mean_Rain_year,
#> Budyko)
#> Wue_env <- c(wue_env_plot1, wue_env_plot2, wue_env_plot3,
#> wue_env_plot4)
#> wue_env_plotindex <- c(rep(1, length(wue_env_plot1)), rep(2,
#> length(wue_env_plot2)), rep(3, length(wue_env_plot3)),
#> rep(4, length(wue_env_plot4)))
#> names(Wue_env) <- paste0("Plot_", wue_env_plotindex, ".",
#> names(Wue_env))
#> Wue_env_farm <- as.numeric(by(Wue_env, rep(levels(years_index),
#> 4), mean))
#> names(Wue_env_farm) <- paste0("Farm.", paste0("[1st April ",
#> levels(years_index), " - 31th march ", as.numeric(as.character(levels(years_index))) +
#> 1, "]"))
#> return(data.frame(Wue_env = c(Wue_env_farm, Wue_env)))
#> }
#>
years_index <- as.factor(as.numeric(as.character(years(simdata$dates))) - as.numeric(months(simdata$dates)<"Apr"))
Rain_crop <- as.vector(simdata[,"top:MeteoReader.Rain"])
ET0_crop <- as.vector(simdata[,"top:MeteoReader.ETP"])
mean_Rain <- mean(Rain_crop, na.rm = TRUE)
mean_ET0 <- mean(ET0_crop, na.rm = TRUE)
budyko <- sqrt((1. - exp(-mean_ET0/mean_Rain)* mean_ET0/mean_Rain / tanh(mean_ET0/mean_Rain)))
mean_rain_year <- as.numeric(as.character(as.factor(by(Rain_crop, years_index, mean))));
DT::datatable({data.frame(t(.get_wue_env(plot_index, simdata, years_index, mean_rain_year, budyko)))})
.get_wue_env
#> function (plot_index, simdata, years_index, mean_rain_year, budyko)
#> {
#> ActualETR_crop <- as.vector(simdata[, paste0("top,FarmModel,Plot_",
#> plot_index, ":WaterFlows.Actual_transp")]) + as.vector(simdata[,
#> paste0("top,FarmModel,Plot_", plot_index, ":WaterFlows.Actual_evap")])
#> mean_ActualETR_year <- as.numeric(as.character(as.factor(by(ActualETR_crop,
#> years_index, mean))))
#> Budyko_year <- (mean_ActualETR_year/mean_rain_year - budyko)/budyko
#> names(Budyko_year) <- paste0("[1st April ", levels(years_index),
#> " - 31th march ", as.numeric(as.character(levels(years_index))) +
#> 1, "]")
#> return(Budyko_year)
#> }
#>