Resolve culture specifications to their lowest hierarchical level
Source:R/resolve_cultures.R
resolve_cultures.Rd
Resolves culture levels in a dataset to their lowest hierarchical level (leaf
nodes) using a parent-child relationship dataset derived from a culture tree
using the German culture names. Only German culture names are supported. If
no match is found, the function assigns NA
to the leaf_culture_de
column.
If correct_culture_names
is set to TRUE
, the function corrects variations
in the naming of aggregated culture groups with "allg.".
Usage
resolve_cultures(
dataset,
srppp,
culture_column = "culture_de",
application_area_column = "application_area_de",
correct_culture_names = TRUE,
resolve_culture_allg = TRUE
)
Arguments
- dataset
A data frame or tibble containing the data to be processed. It should include a column that represents the culture information to be resolved.
- srppp
An srppp_dm object. From this object the relations from each culture to the leaf cultures (lowest level in the hierarchical tree) are used, which are stored as attribute 'culture_leaf_df' of the culture tree, which is itself stored as an attribute of the object.
- culture_column
(Optional) A character string specifying the column in the dataset that contains the culture information to be resolved. Defaults to
"culture_de"
.- application_area_column
(Optional). A character string specifing the name of the column in dataset containing application area information. Default is "application_area_de".
- correct_culture_names
If this argument is set to
TRUE
, the following corrections will be applied: In theculture_tree
, and consequently in theculture_leaf_df
, there are variations in the naming of aggregated culture groups with "allg.". For example, both "Obstbau allg." and "allg. Obstbau" exist. The information about the leaf nodes is only available in one of these terms. Therefore, the information from the term containing the leaf nodes is transferred to the corresponding "allg. ..." term.- resolve_culture_allg
If this argument is set to
TRUE
, the culture "allg." is resolved to their lowest hierarchical level. The information on the application area is additionally used to resolve the culture "allg." to the lowest hierarchical level. For example if the culture "allg." is used in the application area "Obstbau", only the leaf cultures of the culture "Obstbau" are used to resolve the culture "allg.". If the application area is not found in the culture tree, all leaf cultures are used to resolve the culture "allg.".
Value
A data frame or tibble with the same structure as the input
dataset
, but with an additional column "leaf_culture_de"
that contains
the resolved leaf culture levels. For cultures, that are not defined
in the register, the leaf culture is set to NA
.
Details
The resolve_cultures
function processes the input dataset as
follows
Leaf Node Resolution: The cultures in the specified column of the dataset are resolved to their
lowest hierarchical level (leaf nodes) based on the culture_leaf_df
mapping.
The result is an expanded dataset that includes an additional column
(leaf_culture_de
) containing the resolved cultures at their lowest level.
Examples
# \donttest{
library(srppp)
current_register <- srppp_dm()
example_dataset_1 <- data.frame(
substance_de = c("Spirotetramat", "Spirotetramat", "Spirotetramat", "Spirotetramat"),
pNbr = c(7839, 7839, 7839, 7839),
use_nr = c(5, 7, 18, 22),
application_area_de = c("Obstbau", "Obstbau", "Obstbau", "Obstbau"),
culture_de = c("Birne", "Kirsche", "Steinobst", "Kernobst"),
pest_de = c("Birnblattsauger", "Kirschenfliege", "Blattläuse (Röhrenläuse)", "Spinnmilben"))
# Same as above, but with culture name "Kirschen" instead of "Kirsche"
example_dataset_2 <- data.frame(
substance_de = c("Spirotetramat", "Spirotetramat", "Spirotetramat", "Spirotetramat"),
pNbr = c(7839, 7839, 7839, 7839),
use_nr = c(5, 7, 18, 22),
application_area_de = c("Obstbau", "Obstbau", "Obstbau", "Obstbau"),
culture_de = c("Birne", "Kirschen", "Steinobst", "Kernobst"),
pest_de = c("Birnblattsauger", "Kirschenfliege", "Blattläuse (Röhrenläuse)", "Spinnmilben"))
resolve_cultures(example_dataset_1, current_register)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Spirotetramat 7839 5 Obstbau Birne
#> 2 Spirotetramat 7839 7 Obstbau Kirsche
#> 3 Spirotetramat 7839 18 Obstbau Steinobst
#> 4 Spirotetramat 7839 18 Obstbau Steinobst
#> 5 Spirotetramat 7839 18 Obstbau Steinobst
#> 6 Spirotetramat 7839 18 Obstbau Steinobst
#> 7 Spirotetramat 7839 18 Obstbau Steinobst
#> 8 Spirotetramat 7839 22 Obstbau Kernobst
#> 9 Spirotetramat 7839 22 Obstbau Kernobst
#> 10 Spirotetramat 7839 22 Obstbau Kernobst
#> pest_de leaf_culture_de
#> 1 Birnblattsauger Birne
#> 2 Kirschenfliege Kirsche
#> 3 Blattläuse (Röhrenläuse) Aprikose
#> 4 Blattläuse (Röhrenläuse) Kirsche
#> 5 Blattläuse (Röhrenläuse) Pfirsich / Nektarine
#> 6 Blattläuse (Röhrenläuse) Pflaume
#> 7 Blattläuse (Röhrenläuse) Zwetschge
#> 8 Spinnmilben Apfel
#> 9 Spinnmilben Quitte
#> 10 Spinnmilben Birne
# Here we get NA for the leaf culture of "Kirschen"
resolve_cultures(example_dataset_2, current_register)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Spirotetramat 7839 5 Obstbau Birne
#> 2 Spirotetramat 7839 7 Obstbau Kirschen
#> 3 Spirotetramat 7839 18 Obstbau Steinobst
#> 4 Spirotetramat 7839 18 Obstbau Steinobst
#> 5 Spirotetramat 7839 18 Obstbau Steinobst
#> 6 Spirotetramat 7839 18 Obstbau Steinobst
#> 7 Spirotetramat 7839 18 Obstbau Steinobst
#> 8 Spirotetramat 7839 22 Obstbau Kernobst
#> 9 Spirotetramat 7839 22 Obstbau Kernobst
#> 10 Spirotetramat 7839 22 Obstbau Kernobst
#> pest_de leaf_culture_de
#> 1 Birnblattsauger Birne
#> 2 Kirschenfliege <NA>
#> 3 Blattläuse (Röhrenläuse) Aprikose
#> 4 Blattläuse (Röhrenläuse) Kirsche
#> 5 Blattläuse (Röhrenläuse) Pfirsich / Nektarine
#> 6 Blattläuse (Röhrenläuse) Pflaume
#> 7 Blattläuse (Röhrenläuse) Zwetschge
#> 8 Spinnmilben Apfel
#> 9 Spinnmilben Quitte
#> 10 Spinnmilben Birne
# Example showing how cereals "Getreide" are resolved
example_dataset_3 <- data.frame(
substance_de = c("Pirimicarb"),
pNbr = c(2210),
use_nr = c(3),
application_area_de = c("Feldbau"),
culture_de = c("Getreide"),
pest_de = c("Blattläuse (Röhrenläuse)") )
resolve_cultures(example_dataset_3, current_register)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Pirimicarb 2210 3 Feldbau Getreide
#> 2 Pirimicarb 2210 3 Feldbau Getreide
#> 3 Pirimicarb 2210 3 Feldbau Getreide
#> 4 Pirimicarb 2210 3 Feldbau Getreide
#> 5 Pirimicarb 2210 3 Feldbau Getreide
#> 6 Pirimicarb 2210 3 Feldbau Getreide
#> 7 Pirimicarb 2210 3 Feldbau Getreide
#> 8 Pirimicarb 2210 3 Feldbau Getreide
#> 9 Pirimicarb 2210 3 Feldbau Getreide
#> 10 Pirimicarb 2210 3 Feldbau Getreide
#> pest_de leaf_culture_de
#> 1 Blattläuse (Röhrenläuse) Korn (Dinkel)
#> 2 Blattläuse (Röhrenläuse) Emmer
#> 3 Blattläuse (Röhrenläuse) Hartweizen
#> 4 Blattläuse (Röhrenläuse) Wintergerste
#> 5 Blattläuse (Röhrenläuse) Sommergerste
#> 6 Blattläuse (Röhrenläuse) Wintertriticale
#> 7 Blattläuse (Röhrenläuse) Winterroggen
#> 8 Blattläuse (Röhrenläuse) Sommerhafer
#> 9 Blattläuse (Röhrenläuse) Sommerweizen
#> 10 Blattläuse (Röhrenläuse) Winterweizen
# Example resolving ornamental plants ("Zierpflanzen")
example_dataset_4 <- data.frame(substance_de = c("Metaldehyd"),
pNbr = 6142, use_nr = 1, application_area_de = c("Zierpflanzen"),
culture_de = c("Zierpflanzen allg."), pest_de = c("Ackerschnecken/Deroceras Arten") )
resolve_cultures(example_dataset_4, current_register)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 2 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 3 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 4 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 5 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 6 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 7 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 8 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 9 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 10 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 11 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 12 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 13 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 14 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 15 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 16 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 17 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 18 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 19 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 20 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 21 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 22 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 23 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 24 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 25 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 26 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 27 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> 28 Metaldehyd 6142 1 Zierpflanzen allg. Zierpflanzen
#> pest_de leaf_culture_de
#> 1 Ackerschnecken/Deroceras Arten Zier- und Sportrasen
#> 2 Ackerschnecken/Deroceras Arten Stauden
#> 3 Ackerschnecken/Deroceras Arten Baumschule
#> 4 Ackerschnecken/Deroceras Arten Ziergehölze (ausserhalb Forst)
#> 5 Ackerschnecken/Deroceras Arten Rosen
#> 6 Ackerschnecken/Deroceras Arten Begonia
#> 7 Ackerschnecken/Deroceras Arten Cyclame
#> 8 Ackerschnecken/Deroceras Arten Pelargonien
#> 9 Ackerschnecken/Deroceras Arten Primeln
#> 10 Ackerschnecken/Deroceras Arten Dahlien
#> 11 Ackerschnecken/Deroceras Arten Sommerflor
#> 12 Ackerschnecken/Deroceras Arten Kirschlorbeer
#> 13 Ackerschnecken/Deroceras Arten Rosskastanie
#> 14 Ackerschnecken/Deroceras Arten Blautanne
#> 15 Ackerschnecken/Deroceras Arten Buchsbäume (Buxus)
#> 16 Ackerschnecken/Deroceras Arten Weihnachtsbäume
#> 17 Ackerschnecken/Deroceras Arten Nelken
#> 18 Ackerschnecken/Deroceras Arten Iris
#> 19 Ackerschnecken/Deroceras Arten Hyazinthe
#> 20 Ackerschnecken/Deroceras Arten Gladiole
#> 21 Ackerschnecken/Deroceras Arten Chrysantheme
#> 22 Ackerschnecken/Deroceras Arten Blaudistel
#> 23 Ackerschnecken/Deroceras Arten Gerbera
#> 24 Ackerschnecken/Deroceras Arten Tulpe
#> 25 Ackerschnecken/Deroceras Arten Zierkürbis
#> 26 Ackerschnecken/Deroceras Arten Liliengewächse (Zierpflanzen)
#> 27 Ackerschnecken/Deroceras Arten Fichte
#> 28 Ackerschnecken/Deroceras Arten Azaleen
# Illustrate the resolution of the culture "allg."
example_dataset_5 <- data.frame(
substance_de = c("Kupfer (als Oxychlorid)","Metaldehyd","Metaldehyd","Schwefel"),
pNbr = c(585,1090,1090,38),
use_nr = c(12,4,4,1),
application_area_de = c("Weinbau","Obstbau","Obstbau","Beerenbau"),
culture_de = c("allg.","allg.","allg.","Brombeere"),
pest_de = c("Graufäule (Botrytis cinerea)","Wegschnecken/Arion Arten",
"Wegschnecken/Arion Arten","Gallmilben"))
resolve_cultures(example_dataset_5, current_register, resolve_culture_allg = FALSE)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Kupfer (als Oxychlorid) 585 12 Weinbau allg.
#> 2 Metaldehyd 1090 4 Obstbau allg.
#> 3 Metaldehyd 1090 4 Obstbau allg.
#> 4 Schwefel 38 1 Beerenbau Brombeere
#> pest_de leaf_culture_de
#> 1 Graufäule (Botrytis cinerea) <NA>
#> 2 Wegschnecken/Arion Arten <NA>
#> 3 Wegschnecken/Arion Arten <NA>
#> 4 Gallmilben Brombeere
resolve_cultures(example_dataset_5, current_register)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Schwefel 38 1 Beerenbau Brombeere
#> 2 Kupfer (als Oxychlorid) 585 12 Weinbau Jungreben
#> 3 Kupfer (als Oxychlorid) 585 12 Weinbau Ertragsreben
#> 4 Metaldehyd 1090 4 Obstbau Olive
#> 5 Metaldehyd 1090 4 Obstbau Apfel
#> 6 Metaldehyd 1090 4 Obstbau Quitte
#> 7 Metaldehyd 1090 4 Obstbau Aprikose
#> 8 Metaldehyd 1090 4 Obstbau Kirsche
#> 9 Metaldehyd 1090 4 Obstbau Pfirsich / Nektarine
#> 10 Metaldehyd 1090 4 Obstbau Birne
#> 11 Metaldehyd 1090 4 Obstbau Pflaume
#> 12 Metaldehyd 1090 4 Obstbau Zwetschge
#> 13 Metaldehyd 1090 4 Obstbau Walnuss
#> 14 Metaldehyd 1090 4 Obstbau Olive
#> 15 Metaldehyd 1090 4 Obstbau Apfel
#> 16 Metaldehyd 1090 4 Obstbau Quitte
#> 17 Metaldehyd 1090 4 Obstbau Aprikose
#> 18 Metaldehyd 1090 4 Obstbau Kirsche
#> 19 Metaldehyd 1090 4 Obstbau Pfirsich / Nektarine
#> 20 Metaldehyd 1090 4 Obstbau Birne
#> 21 Metaldehyd 1090 4 Obstbau Pflaume
#> 22 Metaldehyd 1090 4 Obstbau Zwetschge
#> 23 Metaldehyd 1090 4 Obstbau Walnuss
#> pest_de leaf_culture_de
#> 1 Gallmilben Brombeere
#> 2 Graufäule (Botrytis cinerea) Jungreben
#> 3 Graufäule (Botrytis cinerea) Ertragsreben
#> 4 Wegschnecken/Arion Arten Olive
#> 5 Wegschnecken/Arion Arten Apfel
#> 6 Wegschnecken/Arion Arten Quitte
#> 7 Wegschnecken/Arion Arten Aprikose
#> 8 Wegschnecken/Arion Arten Kirsche
#> 9 Wegschnecken/Arion Arten Pfirsich / Nektarine
#> 10 Wegschnecken/Arion Arten Birne
#> 11 Wegschnecken/Arion Arten Pflaume
#> 12 Wegschnecken/Arion Arten Zwetschge
#> 13 Wegschnecken/Arion Arten Walnuss
#> 14 Wegschnecken/Arion Arten Olive
#> 15 Wegschnecken/Arion Arten Apfel
#> 16 Wegschnecken/Arion Arten Quitte
#> 17 Wegschnecken/Arion Arten Aprikose
#> 18 Wegschnecken/Arion Arten Kirsche
#> 19 Wegschnecken/Arion Arten Pfirsich / Nektarine
#> 20 Wegschnecken/Arion Arten Birne
#> 21 Wegschnecken/Arion Arten Pflaume
#> 22 Wegschnecken/Arion Arten Zwetschge
#> 23 Wegschnecken/Arion Arten Walnuss
# Illustrate the resolution of "Obstbau allg.", which does not have children in
# the XML files, but which should have children, because Obstbau allg. is
# not a leaf culture.
example_dataset_6 <- data.frame(
substance_de = c("Schwefel"),
pNbr = c(3561),
use_nr = c(4),
application_area_de = c("Obstbau"),
culture_de = c("Obstbau allg."),
pest_de = c("Wühl- oder Schermaus") )
resolve_cultures(example_dataset_6, current_register,
correct_culture_names = FALSE)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Schwefel 3561 4 Obstbau Obstbau allg.
#> pest_de leaf_culture_de
#> 1 Wühl- oder Schermaus <NA>
resolve_cultures(example_dataset_6, current_register,
correct_culture_names = TRUE)
#> substance_de pNbr use_nr application_area_de culture_de
#> 1 Schwefel 3561 4 Obstbau allg. Obstbau
#> 2 Schwefel 3561 4 Obstbau allg. Obstbau
#> 3 Schwefel 3561 4 Obstbau allg. Obstbau
#> 4 Schwefel 3561 4 Obstbau allg. Obstbau
#> 5 Schwefel 3561 4 Obstbau allg. Obstbau
#> 6 Schwefel 3561 4 Obstbau allg. Obstbau
#> 7 Schwefel 3561 4 Obstbau allg. Obstbau
#> 8 Schwefel 3561 4 Obstbau allg. Obstbau
#> 9 Schwefel 3561 4 Obstbau allg. Obstbau
#> 10 Schwefel 3561 4 Obstbau allg. Obstbau
#> pest_de leaf_culture_de
#> 1 Wühl- oder Schermaus Olive
#> 2 Wühl- oder Schermaus Apfel
#> 3 Wühl- oder Schermaus Quitte
#> 4 Wühl- oder Schermaus Aprikose
#> 5 Wühl- oder Schermaus Kirsche
#> 6 Wühl- oder Schermaus Pfirsich / Nektarine
#> 7 Wühl- oder Schermaus Birne
#> 8 Wühl- oder Schermaus Pflaume
#> 9 Wühl- oder Schermaus Zwetschge
#> 10 Wühl- oder Schermaus Walnuss
# }