Code
source("R/FUNCTIONS.R")Our goal was to validate the dimensions of the passage structures. We needed to check if the researcher-reported measurements were plausible (e.g., not too long or too short).
It was difficult to define acceptable dimensions for the structures. Instead, we opted for a more general approach. We performed a general inspection of all data and summarized the columns. This allows for a visual check. Suspicious data can then be flagged and communicated to the researchers.
We use our customized read_sheet function to load the camera trap setup data from all available spreadsheets. Hence, we need to load the FUNCTIONS.R.
source("R/FUNCTIONS.R")Our initial step after reading the data is to check for the common “lenght” typo. Following this check, we generate a summary of all measurement fields for the underpasses, overpasses, and fencing spreadsheets.
under <- read_sheet(sheet = "Underpasses", na = c("NA", "na"))
under |>
purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
names()character(0)
all_under <- under |>
purrr::discard(~ nrow(.x) == 0) |>
purrr::map(\(x) dplyr::select(x, Structure_type:Waterbody_width)) |>
dplyr::bind_rows(.id = "Dataset")
summary(all_under) Dataset Structure_type Structure_cell Structure_shape
Length:355 Length:355 Length:355 Length:355
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
Structure_photo Structure_age Structure_height Structure_length
Length:355 Min. : 1.00 Min. : 0.450 Min. : 0.80
Class :character 1st Qu.: 5.00 1st Qu.: 1.000 1st Qu.: 12.00
Mode :character Median :10.00 Median : 2.000 Median : 18.00
Mean :13.46 Mean : 2.314 Mean : 22.32
3rd Qu.:20.00 3rd Qu.: 3.000 3rd Qu.: 26.00
Max. :30.00 Max. :12.000 Max. :101.60
NA's :68 NA's :30 NA's :122
Structure_width Waterbody_width
Min. : 0.500 Min. : 0.500
1st Qu.: 1.200 1st Qu.: 1.300
Median : 2.000 Median : 3.000
Mean : 4.882 Mean : 9.854
3rd Qu.: 3.000 3rd Qu.: 5.500
Max. :127.000 Max. :170.000
NA's :31 NA's :316
over <- read_sheet(sheet = "Overpasses", na = c("NA", "na"))
over |>
purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
names()character(0)
all_over <- over |>
purrr::discard(~ nrow(.x) == 0) |>
purrr::map(\(x) dplyr::select(x, Structure_type:Structure_internal_height)) |>
dplyr::bind_rows(.id = "Dataset")
summary(all_over) Dataset Structure_type Structure_material Structure_anchor_1
Length:140 Length:140 Length:140 Length:140
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
Structure_anchor_2 Structure_branch_access Structure_photo Structure_age
Length:140 Length:140 Length:140 Min. : 1.000
Class :character Class :character Class :character 1st Qu.: 1.000
Mode :character Mode :character Mode :character Median : 5.000
Mean : 6.276
3rd Qu.:10.000
Max. :20.000
NA's :35
Structure_height Structure_length Structure_width Structure_internal_height
Min. : 4.100 Min. : 6.00 Min. : 0.050 Min. : NA
1st Qu.: 6.555 1st Qu.: 11.66 1st Qu.: 0.375 1st Qu.: NA
Median : 7.000 Median : 15.00 Median : 0.500 Median : NA
Mean :12.504 Mean : 17.10 Mean : 1.308 Mean :NaN
3rd Qu.:18.750 3rd Qu.: 20.00 3rd Qu.: 0.500 3rd Qu.: NA
Max. :37.000 Max. :120.00 Max. :39.000 Max. : NA
NA's :2 NA's :2 NA's :33 NA's :140
fence <- read_sheet(sheet = "Fencing", na = c("NA", "na"))
fence |>
purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
names()character(0)
all_fence <- fence |>
purrr::discard(~ nrow(.x) == 0) |>
purrr::map(\(x) {
dplyr::select(x, Fence_mesh_size:Fence_length_b2)
}) |>
dplyr::bind_rows(.id = "Dataset")
summary(all_fence) Dataset Fence_mesh_size Fence_height Fence_length_a1
Length:79 Length:79 Min. :0.600 Min. : 0.0
Class :character Class :character 1st Qu.:1.500 1st Qu.: 70.0
Mode :character Mode :character Median :2.000 Median : 100.0
Mean :1.741 Mean : 222.2
3rd Qu.:2.000 3rd Qu.: 235.0
Max. :2.200 Max. :2200.0
NA's :5 NA's :6
Fence_length_b1 Fence_length_a2 Fence_length_b2
Min. : 0.00 Min. : 30.0 Min. : 10.0
1st Qu.: 62.28 1st Qu.: 98.5 1st Qu.: 88.0
Median : 100.00 Median : 100.0 Median : 100.0
Mean : 217.08 Mean : 226.5 Mean : 223.0
3rd Qu.: 235.00 3rd Qu.: 234.6 3rd Qu.: 234.6
Max. :2000.00 Max. :2000.0 Max. :2000.0
NA's :6 NA's :7 NA's :7