vignettes/a06_custom_crop_input.Rmd
a06_custom_crop_input.Rmd
As already emphasized in Article 2, the following are the crop datasets available in ALUES:
d <- utils::data(package = "ALUES")
alues_data <- d$results[, "Item"]
crop_data <- regmatches(alues_data, gregexpr(paste0("^[A-Z]{2,}", collapse = "|"), alues_data))
crop_data <- unique(unlist(lapply(crop_data, function(x) substr(x, 1, nchar(x)-1))))
crop_data
## [1] "ALFALFA" "AVOCADO" "BAMBOO" "BANANA" "BARLEY"
## [6] "BEANCA" "BEANS" "CABBAGE" "CARROTS" "CASHEW"
## [11] "CASSAVA" "CHICKPEA" "CINNAMON" "CITRUS" "COCOA"
## [16] "COCONUT" "COFFEEAR" "COFFEERO" "COTTON" "COWPEA"
## [21] "CUCUMBER" "GROUNDNUTS" "GUAVA" "LONGAN" "MAIZE"
## [26] "MANGO" "MILLETS" "OILPALM" "OLIVES" "ONION"
## [31] "PAPAYA" "PEACH" "PEAR" "PEA" "PEPPERGR"
## [36] "PERSIMMON" "PINEAPPLE" "PLUM" "POTATOSW" "POTATO"
## [41] "RICEBR" "RICEIW" "RICENF" "RICEUR" "RUBBER"
## [46] "SAFFLOWER" "SESAME" "SORGHUM" "SOYA" "SUGARCANE"
## [51] "SUNFLOWER" "TEA" "TOBACCO" "TOMATO" "WATERMELON"
## [56] "WHEAT"
In cases were the target crop is not available in the ALUES database, users can specify their own by following the template of a crop requirement dataset. For example,
## Loading required package: Rcpp
COFFEEARSoil
## code s3_a s2_a s1_a s1_b s2_b s3_b wts
## 1 CFragm 55.0 35.0 15.0 <NA> <NA> <NA> 3
## 2 SoilDpt 50.0 75.0 100.0 <NA> <NA> <NA> 1
## 3 CaCO3 5.0 2.0 1.0 <NA> <NA> <NA> 3
## 4 Gyps 3.0 2.0 0.5 <NA> <NA> <NA> 3
## 5 CECc 8.0 10.0 16.0 <NA> <NA> <NA> 2
## 6 BS 20.0 35.0 50.0 <NA> <NA> <NA> 2
## 7 SumBCs 1.6 2.8 4.0 <NA> <NA> <NA> 2
## 8 pHH2O 5.2 5.4 5.6 6.6 7.4 7.8 2
## 9 OC 0.7 0.8 1.2 <NA> <NA> <NA> 3
## 10 ECedS 2.0 0.5 0.5 <NA> <NA> <NA> 3
## 11 SoilTe 3.0 4.0 9.0 <NA> <NA> <NA> 2
The above dataframe shows us the first column as the code of the target factors, and the remaining of the columns are the suitability classes with the last column for the weights if any.
It should be noted that apart from the proper templating of the dataframe for any new target crop, the categorization of the characteristics must be observed as well. That is, for any new crop, the four characteristics: terrain, soil, water, and temp, must be encoded separately as one dataframe. That is, for any target crop there will be four dataframes to expect for the four characteristics mentioned.
To create a custom crop dataset, use the following code to generate an empty row dataframe with the appropriate column name
new_crop <- data.frame(matrix(nrow=0, ncol=ncol(COFFEEARSoil)))
names(new_crop) <- names(COFFEEARSoil)
new_crop
## [1] code s3_a s2_a s1_a s1_b s2_b s3_b wts
## <0 rows> (or 0-length row.names)
Needless to say, any ALUES crop dataset can be used above in place of
COFFEEARSoil
, since all crop datasets have the same column
names.
Next is to enter the name of the factors in the first column, and then the corresponding standard values for suitability classes. Suppose for example, the new crop demands a factor CFragm to be S3 (marginally suitable) if it is 60, S2 if it is 40, and S1 if it is 20; then this can be entered as follows:
new_crop[1, "code"] <- "CFragm"
new_crop[1, 2:4] <- c(60, 40, 20)
new_crop
## code s3_a s2_a s1_a s1_b s2_b s3_b wts
## 1 CFragm 60 40 20 NA NA NA NA
New factors can be added further in the succeeding rows, say for row 2 we have pHH2O with the following data
new_crop[2, "code"] <- "pHH2O"
new_crop[2, 2:7] <- c(4.5, 5.0, 5.1, 5.6, 6.2, 6.9)
new_crop
## code s3_a s2_a s1_a s1_b s2_b s3_b wts
## 1 CFragm 60.0 40 20.0 NA NA NA NA
## 2 pHH2O 4.5 5 5.1 5.6 6.2 6.9 NA
Adding weight to pHH2O is done as follows:
new_crop[2, "wts"] <- 2
new_crop
## code s3_a s2_a s1_a s1_b s2_b s3_b wts
## 1 CFragm 60.0 40 20.0 NA NA NA NA
## 2 pHH2O 4.5 5 5.1 5.6 6.2 6.9 2
Now suppose we want to evaluate Marinduque land units for this new crop, we can do this as follows:
newcrop_suit <- suit(new_crop, terrain=MarinduqueLT)
lapply(newcrop_suit[["terrain"]], function (x) head(x))
## $`Factors Evaluated`
## [1] "CFragm" "pHH2O"
##
## $`Suitability Score`
## CFragm pHH2O
## 1 0.8625 0
## 2 0.8875 0
## 3 0.8750 0
## 4 0.8750 0
## 5 0.8500 0
## 6 0.8625 0
##
## $`Suitability Class`
## CFragm pHH2O
## 1 S1 N
## 2 S1 N
## 3 S1 N
## 4 S1 N
## 5 S1 N
## 6 S1 N
##
## $`Factors' Minimum Values`
## CFragm pHH2O
## 0 0
##
## $`Factors' Maximum Values`
## CFragm pHH2O
## 80.00 7.38
##
## $`Factors' Weights`
## [1] NA 2
##
## $`Crop Evaluated`
## [1] "Custom Crop for Terrain"