10  Check Measurement Columns

10.1 Problem Description

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).

10.2 Problem Solving

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.

10.2.1 Common steps

We use datapaperchecks::read_sheet to load the camera trap setup data from all available spreadsheets.

10.2.2 Specific steps

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.

10.2.2.1 Underpasses

Code
under <- datapaperchecks::read_sheet(sheet = "Underpasses", na = c("NA", "na"))

under |>
  purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
  names()
character(0)
Code
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:353         Length:353         Length:353         Length:353        
 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:353         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.306   Mean   : 22.54  
                    3rd Qu.:20.00   3rd Qu.: 3.000   3rd Qu.: 26.00  
                    Max.   :30.00   Max.   :12.000   Max.   :101.60  
                    NA's   :66      NA's   :30       NA's   :116     
 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.863   Mean   :  9.854  
 3rd Qu.:  3.000   3rd Qu.:  5.500  
 Max.   :127.000   Max.   :170.000  
 NA's   :27        NA's   :314      

10.2.2.2 Overpasses

Code
over <- datapaperchecks::read_sheet(sheet = "Overpasses", na = c("NA", "na"))

over |>
  purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
  names()
character(0)
Code
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:141         Length:141         Length:141         Length:141        
 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:141         Length:141              Length:141         Min.   : 1.000  
 Class :character   Class :character        Class :character   1st Qu.: 1.000  
 Mode  :character   Mode  :character        Mode  :character   Median : 5.000  
                                                               Mean   : 6.226  
                                                               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.0500   Min.   : NA              
 1st Qu.: 6.545   1st Qu.: 11.68   1st Qu.: 0.3875   1st Qu.: NA              
 Median : 7.000   Median : 15.00   Median : 0.5000   Median : NA              
 Mean   :12.461   Mean   : 16.84   Mean   : 1.3005   Mean   :NaN              
 3rd Qu.:18.500   3rd Qu.: 20.00   3rd Qu.: 0.5000   3rd Qu.: NA              
 Max.   :37.000   Max.   :120.00   Max.   :39.0000   Max.   : NA              
 NA's   :2        NA's   :2        NA's   :33        NA's   :141              

10.2.2.3 Fencing

Code
fence <- datapaperchecks::read_sheet(sheet = "Fencing", na = c("NA", "na"))

fence |>
  purrr::keep(~ any(stringr::str_detect(names(.x), "lenght"))) |>
  names()
character(0)
Code
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