Deer Monitoring Data Quality Statewide Surveys By Wildlife Unlimited

deer data-quality

A data quality assessment of statewide deer monitoring data in 2023

Justin G Cally https://justincally.github.io/blog/ (Arthur Rylah Institute)https://www.ari.vic.gov.au/
2023-03-03
Show code
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  layout="l-screen-inset"
)
# library(deervic)
library(sf)
library(DBI)
library(dplyr)
library(pointblank)

# Postgres connection: better for rasters (and easier to set up)
con <- RPostgreSQL::dbConnect(RPostgres::Postgres(),
                              host = '10.110.7.201',
                              dbname = 'ari-dev-weda-psql-01',
                              user = "psql_admin",
                              password = keyring::key_get(service = "ari-dev-weda-psql-01", username = "psql_admin"),
                              port = 5432,
                              service = NULL,
                              list(sslmode = "require"))


curated_final_site_selection <- st_read(dsn = con,
                                        layer = Id(schema = "deervic", table = "curated_final_site_selection"))

rawdir <- "/Volumes/Cally_Camtr/StatewideDeer/RawFiles"

stations <- list.dirs(rawdir, recursive = F, full.names = F)

curated_site_data <- tbl(con, dbplyr::in_schema(schema = "deervic", table = "curated_site_data")) %>%
  filter(SiteID %in% !!stations & User_Name != "Justin") %>%
  collect() %>%
  mutate(Latitude = as.numeric(Latitude), 
         Longitude = as.numeric(Longitude),
         Date = as.Date(Date, format = "%m/%d/%Y"))

curated_site_retrieval_data <-  tbl(con, dbplyr::in_schema(schema = "deervic", table = "curated_site_retrieval_data")) %>%
  filter(SiteID %in% !!stations & User_Name != "Justin") %>%
  collect() %>%
  mutate(Date = as.Date(Date, format = "%m/%d/%Y"))

data_dictionary <- tbl(con, dbplyr::in_schema(schema = "deervic", table = "data_dictionary")) %>%
  collect()

all_sites <- tbl(con, dbplyr::in_schema(schema = "deervic", table = "raw_sampling_grid")) %>%
  dplyr::select(ID) %>%
  collect() %>%
  pull()

# Select deer species of interest
# deer_species <- c("Dama dama", "Rusa unicolor")
# 
# raw_camtrap_records <- tbl(con, dbplyr::in_schema(schema = "deervic", table = "raw_camtrap_records")) %>%
#   filter(Species %in% !!deer_species) %>%
#   collect()

Site Assessment and Camera Deployment

The following data quality statement is sourced from data relating to the initial site assessment and camera deployment. This data quality statement can help identify issues relating to the deployment of camera traps and site assessments such is unequal sampling/search area (transects) or data entry issues.

Show code
site_agent <- 
  create_agent(
    tbl = curated_site_data,
    tbl_name = "curated_site_data",
    label = "VALID-I Curated Site Data", actions = action_levels(stop_at = 1),
  ) %>% # Site ID
  col_vals_in_set(vars(SiteID), set = c(curated_final_site_selection$ID)) %>%
  col_vals_between(vars(SiteID), left = 0, right = max(all_sites)) %>%
  rows_distinct(columns = vars(SiteID, Iteration)) %>%
  # Personel
  col_vals_not_null(vars(User_Name, Personnel)) %>%
  # Date 
  pointblank::col_is_date(vars(Date)) %>%
  col_vals_gt(columns = vars(Date), value = "2021-07-01") %>%
  # Latitude Longitude
  col_is_numeric(vars(Latitude, Longitude)) %>%
  col_vals_between(vars(Latitude), left = -39.13658, right = -33.98128) %>%
  col_vals_between(vars(Longitude), left = 140.96190, right = 149.97629) %>%
  # cameraID 
  col_vals_regex(columns = vars(CameraID), regex = "^[a-zA-Z]{2}[0-9]{8}$") %>%
  # Height 
  col_vals_not_null(vars(CamHeight)) %>%
  col_vals_equal(vars(CamHeight), value = 1) %>%
  col_vals_not_null(vars(DistanceM1, DistanceM2, DistanceM3, DistanceM4)) %>%
  col_vals_equal(vars(DistanceM1), value = 2.5) %>%
  col_vals_equal(vars(DistanceM2), value = 5) %>%
  col_vals_equal(vars(DistanceM3), value = 7.5) %>%
  col_vals_equal(vars(DistanceM4), value = 10) %>%
  # CamBearing
  col_vals_between(vars(CamBearing), left = 0, right = 360) %>%
  col_vals_between(vars(CamBearing), left = 135, right = 225, brief = "South facing camera") %>%
  # Slope
  col_vals_between(vars(Slope), left = 0, right = 100) %>%
  #Trail
  col_vals_in_set(vars(Trail), set = c("Yes", "No", "Not sure")) %>%
  col_vals_not_null(vars(DistanceToTrail), preconditions = ~ . %>% dplyr::filter(Trail == "Yes")) %>%
  # Images
  col_vals_not_null(vars(ImageNorth, ImageEast, ImageSouth, ImageWest)) %>%
  #Transects
  col_vals_equal(vars(TransDistance), value = 450) %>%
  col_vals_equal(vars(Transects), value = 3) %>%
  col_vals_not_null(vars(Pellets, Rubbings, Footprints, Wallows)) %>%
  # veg measurements
  col_vals_not_null(vars(NWUCover, NNWHUCover, EWUCover, ENWHUCover, BGroundCover, TopHeight, CanopyCov, Saplings, Seedlings)) %>%
  interrogate()
Show code
site_agent
Pointblank Validation
VALID-I Curated Site Data

tibble curated_site_dataWARN STOP 1 NOTIFY
STEP COLUMNS VALUES TBL EVAL UNITS PASS FAIL W S N EXT
1
col_vals_in_set
 col_vals_in_set()

SiteID

85, 115, 229, 553, 676, 811, 832, 900, 1358, 1479, 1597, 1687, 1957, 2198, 2602, 2630, 2661, 2987, 3010, 3176, 3227, 3416, 3721, 3760, 3779, 3787, 4085, 4257, 4416, 4585, 4659, 4905, 5173, 5232, 5573, 5860, 5938, 5989, 5996, 6149, 6217, 6252, 6727, 6794, 7113, 7323, 7455, 8300, 8347, 8399, 8458, 8721, 8998, 9589, 9765, 9941, 9986, 10696, 10788, 11084, 11733, 11805, 12059, 12812, 12887, 27415, 12933, 12979, 13417, 13421, 13657, 13786, 14226, 14276, 14392, 14622, 14624, 14692, 15080, 15300, 15628, 16177, 31764, 16287, 16290, 16293, 16508, 16615, 17411, 17874, 17992, 18398, 20703, 23204, 23205, 23308, 23310, 24090, 24138, 24141, 24247, 24526, 24644, 24954, 25067, 25492, 25505, 25706, 26308, 26361, 26456, 26489, 26712, 26826, 26873, 27135, 27149, 27184, 27331, 27386, 27448, 27637, 27750, 27817, 28112, 28341, 28465, 28724, 29053, 29886, 30062, 30626, 30755, 30775, 31003, 31368, 31524, 31694, 31919, 31922, 32127, 32232, 32405, 32411, 32597, 32742, 32948, 33018, 33376, 34174, 34504, 34729, 34948, 34956, 35075, 35311, 35527, 47387, 35738, 35739, 35929, 36160, 36521, 36602, 36749, 36846, 36905, 36917, 37044, 37075, 37852, 38070, 38303, 38368, 38876, 39299, 39389, 39633, 39638, 39643, 39804, 39880, 39889, 40475, 40721, 40722, 40789, 40797, 40801, 40873, 40880, 40972, 41118, 41203, 41287, 41312, 41572, 41639, 41655, 41742, 41760, 41761, 41917, 41934, 42005, 42093, 42104, 42273, 42352, 42372, 42516, 42519, 42680, 42697, 42760, 42792, 42847, 43021, 43134, 43198, 43367, 43446, 47978, 43462, 43540, 43650, 43703, 43707, 43825, 43926, 43958, 43983, 43996, 44081, 44142, 44225, 44235, 44241, 44288, 44368, 44408, 46362, 44496, 44499, 44546, 44679, 44749, 44765, 44841, 44849, 44911, 44940, 45039, 45044, 45077, 45143, 45193, 45198, 45201, 45206, 45225, 45309, 45475, 45485, 45575, 45641, 45668, 45818, 46031, 46063, 46082, 46130, 46132, 46135, 46149, 46236, 46238, 46272, 46297, 46327, 46354, 46453, 46462, 46476, 46493, 46503, 46504, 46553, 46685, 46703, 46738, 46766, 46792, 46993, 47055, 47110, 47115, 47128, 47191, 47203, 47271, 47272, 47406, 47439, 47468, 47548, 47565, 47566, 47609, 47615, 47662, 47682, 47689, 47768, 47800, 47819, 47830, 47840, 47841, 47850, 47863, 47865, 48009, 48033, 48070, 48076, 48088, 48113, 48129, 48148, 48162, 48210, 48233, 48361, 48363, 48387, 48388, 48422, 48588, 48603, 48613, 48679, 48746, 48765, 48822, 48847, 48903, 48911, 48966, 48968, 48969, 48988, 48998, 49055, 49111, 49116, 49122, 49186, 49191, 49195, 49334, 49410, 49419, 49468, 49485, 49487, 49492, 49539, 49554, 49613, 49636, 49653, 49760, 49768, 49770, 49839, 49865, 49890, 49897, 49921, 49928, 50113, 50197, 50207, 50213, 50262, 50268, 50281, 50342, 50411, 50444, 50461, 50527, 50599, 50689, 50725, 50744, 50751, 50819, 50823, 50843, 51037, 51076, 51096, 51207, 51219, 51220, 51261, 51463, 51618, 51685, 51724, 51790, 51797, 51823, 51833, 51871, 51898, 51932, 51957, 51968, 51995, 52018, 52036, 52868, 52192, 52206, 52224, 52254, 52286, 52291, 52356, 52394, 52400, 52412, 52438, 52497, 52510, 52596, 52651, 52708, 52716, 52774, 52780, 52807, 52834, 53059, 53091, 53117, 53191, 53240, 53254, 53282, 53336, 53392, 53438, 53452, 53453, 53456, 53554, 53577, 53581, 53748, 53797, 53808, 53838, 53857, 54005, 54008, 54011, 54034, 54082, 54132, 54134, 54157, 54188, 54189, 54200, 54223, 54315, 54328, 54330, 54449, 54462, 54507, 54555, 54575, 54618, 54646, 54669, 54670, 54744, 54767, 54790, 54800, 54815, 54817, 54825, 54903, 54909, 54910, 54912, 54967, 55040, 55047, 55057, 55076, 55083, 55090, 55092, 55105, 55192, 55210, 55212, 55252, 55302, 55311, 55335, 55349, 55404, 55502, 55579, 55582, 55586, 55626, 55695, 55736, 55742, 55744, 55757, 55785, 55806, 55879, 55882, 55985, 55986, 55990, 56037, 56087, 56106, 56194, 56253, 56323, 56354, 56370, 56383, 56438, 56453, 56465, 56505, 56518, 56587, 56621, 56637, 56658, 56661, 56667, 56741, 56814, 56833, 56834, 56881, 56890, 56908, 56919, 56950, 56953, 56958, 57018, 57049, 57101, 57661, 57119, 57148, 57166, 57281, 57288, 57298, 57318, 57333, 57345, 57354, 57380, 57407, 57470, 57491, 57542, 57591, 57597, 57615, 57619, 57680, 57707, 57718, 57797, 57810, 57857, 57878, 57924, 57936

50 50
1.00
0
0.00

2
col_vals_between
 col_vals_between()

SiteID

[0, 57,944]

50 50
1.00
0
0.00

3
rows_distinct
 rows_distinct()

SiteID, Iteration

50 50
1.00
0
0.00

4
col_vals_not_null
 col_vals_not_null()

User_Name

50 50
1.00
0
0.00

5
col_vals_not_null
 col_vals_not_null()

Personnel

50 50
1.00
0
0.00

6
col_is_date
 col_is_date()

Date

1 1
1.00
0
0.00

7
col_vals_gt
 col_vals_gt()

Date

2021-07-01

50 50
1.00
0
0.00

8
col_is_numeric
 col_is_numeric()

Latitude

1 1
1.00
0
0.00

9
col_is_numeric
 col_is_numeric()

Longitude

1 1
1.00
0
0.00

10
col_vals_between
 col_vals_between()

Latitude

[−39.1366, −33.9813]

50 31
0.62
19
0.38

11
col_vals_between
 col_vals_between()

Longitude

[140.9619, 149.9763]

50 45
0.90
5
0.10

12
col_vals_regex
 col_vals_regex()

CameraID

^[a-zA-Z]{2}[0-9]{8}$

50 0
0.00
50
1.00

13
col_vals_not_null
 col_vals_not_null()

CamHeight

50 50
1.00
0
0.00

14
col_vals_equal
 col_vals_equal()

CamHeight

1

50 46
0.92
4
0.08

15
col_vals_not_null
 col_vals_not_null()

DistanceM1

50 50
1.00
0
0.00

16
col_vals_not_null
 col_vals_not_null()

DistanceM2

50 50
1.00
0
0.00

17
col_vals_not_null
 col_vals_not_null()

DistanceM3

50 50
1.00
0
0.00

18
col_vals_not_null
 col_vals_not_null()

DistanceM4

50 50
1.00
0
0.00

19
col_vals_equal
 col_vals_equal()

DistanceM1

2.5

50 49
0.98
1
0.02

20
col_vals_equal
 col_vals_equal()

DistanceM2

5

50 49
0.98
1
0.02

21
col_vals_equal
 col_vals_equal()

DistanceM3

7.5

50 49
0.98
1
0.02

22
col_vals_equal
 col_vals_equal()

DistanceM4

10

50 50
1.00
0
0.00

23
col_vals_between
 col_vals_between()

CamBearing

[0, 360]

50 50
1.00
0
0.00

24
col_vals_between
 col_vals_between()

CamBearing

[135, 225]

50 47
0.94
3
0.06

25
col_vals_between
 col_vals_between()

Slope

[0, 100]

50 48
0.96
2
0.04

26
col_vals_in_set
 col_vals_in_set()

Trail

Yes, No, Not sure

50 50
1.00
0
0.00

27
col_vals_not_null
 col_vals_not_null()

DistanceToTrail

19 19
1.00
0
0.00

28
col_vals_not_null
 col_vals_not_null()

ImageNorth

50 0
0.00
50
1.00

29
col_vals_not_null
 col_vals_not_null()

ImageEast

50 0
0.00
50
1.00

30
col_vals_not_null
 col_vals_not_null()

ImageSouth

50 0
0.00
50
1.00

31
col_vals_not_null
 col_vals_not_null()

ImageWest

50 0
0.00
50
1.00

32
col_vals_equal
 col_vals_equal()

TransDistance

450

50 43
0.86
7
0.14

33
col_vals_equal
 col_vals_equal()

Transects

3

50 50
1.00
0
0.00

34
col_vals_not_null
 col_vals_not_null()

Pellets

50 50
1.00
0
0.00

35
col_vals_not_null
 col_vals_not_null()

Rubbings

50 50
1.00
0
0.00

36
col_vals_not_null
 col_vals_not_null()

Footprints

50 50
1.00
0
0.00

37
col_vals_not_null
 col_vals_not_null()

Wallows

50 50
1.00
0
0.00

38
col_vals_not_null
 col_vals_not_null()

NWUCover

50 50
1.00
0
0.00

39
col_vals_not_null
 col_vals_not_null()

NNWHUCover

50 50
1.00
0
0.00

40
col_vals_not_null
 col_vals_not_null()

EWUCover

50 50
1.00
0
0.00

41
col_vals_not_null
 col_vals_not_null()

ENWHUCover

50 50
1.00
0
0.00

42
col_vals_not_null
 col_vals_not_null()

BGroundCover

50 50
1.00
0
0.00

43
col_vals_not_null
 col_vals_not_null()

TopHeight

50 50
1.00
0
0.00

44
col_vals_not_null
 col_vals_not_null()

CanopyCov

50 50
1.00
0
0.00

45
col_vals_not_null
 col_vals_not_null()

Saplings

50 50
1.00
0
0.00

46
col_vals_not_null
 col_vals_not_null()

Seedlings

50 50
1.00
0
0.00

2023-03-27 10:51:06 AEDT 3.2 s 2023-03-27 10:51:09 AEDT

Camera Retrieval

This data quality statement focuses on data collected during camera retrieval and focuses on whether the data collected during retrieval is valid and can be matched up to the deployment data.

Show code
retrieval_agent <- 
  create_agent(
    tbl = curated_site_retrieval_data,
    tbl_name = "curated_site_retrieval_data",
    label = "VALID-I Curated Retrieval Data", actions = action_levels(stop_at = 1),
  ) %>% # Site ID
  col_vals_in_set(vars(SiteID), set = c(curated_final_site_selection$ID)) %>%
  col_vals_between(vars(SiteID), left = 0, right = max(all_sites)) %>%
  col_vals_make_set(vars(SiteID), set = curated_site_data$SiteID) %>%
  rows_distinct(columns = vars(SiteID, Iteration)) %>%
  # Personel
  col_vals_not_null(vars(User_Name, Personnel)) %>%
  # Date 
  pointblank::col_is_date(vars(Date)) %>%
  col_vals_gt(columns = vars(Date), value = "2021-07-01") %>%
  # cameraID 
  col_vals_regex(columns = vars(CameraID), regex = "^[a-zA-Z]{2}[0-9]{8}$") %>%
  col_vals_in_set(vars(CameraID), set = curated_site_data$CameraID) %>%
  interrogate()
Show code
retrieval_agent
Pointblank Validation
VALID-I Curated Retrieval Data

tibble curated_site_retrieval_dataWARN STOP 1 NOTIFY
STEP COLUMNS VALUES TBL EVAL UNITS PASS FAIL W S N EXT
1
col_vals_in_set
 col_vals_in_set()

SiteID

85, 115, 229, 553, 676, 811, 832, 900, 1358, 1479, 1597, 1687, 1957, 2198, 2602, 2630, 2661, 2987, 3010, 3176, 3227, 3416, 3721, 3760, 3779, 3787, 4085, 4257, 4416, 4585, 4659, 4905, 5173, 5232, 5573, 5860, 5938, 5989, 5996, 6149, 6217, 6252, 6727, 6794, 7113, 7323, 7455, 8300, 8347, 8399, 8458, 8721, 8998, 9589, 9765, 9941, 9986, 10696, 10788, 11084, 11733, 11805, 12059, 12812, 12887, 27415, 12933, 12979, 13417, 13421, 13657, 13786, 14226, 14276, 14392, 14622, 14624, 14692, 15080, 15300, 15628, 16177, 31764, 16287, 16290, 16293, 16508, 16615, 17411, 17874, 17992, 18398, 20703, 23204, 23205, 23308, 23310, 24090, 24138, 24141, 24247, 24526, 24644, 24954, 25067, 25492, 25505, 25706, 26308, 26361, 26456, 26489, 26712, 26826, 26873, 27135, 27149, 27184, 27331, 27386, 27448, 27637, 27750, 27817, 28112, 28341, 28465, 28724, 29053, 29886, 30062, 30626, 30755, 30775, 31003, 31368, 31524, 31694, 31919, 31922, 32127, 32232, 32405, 32411, 32597, 32742, 32948, 33018, 33376, 34174, 34504, 34729, 34948, 34956, 35075, 35311, 35527, 47387, 35738, 35739, 35929, 36160, 36521, 36602, 36749, 36846, 36905, 36917, 37044, 37075, 37852, 38070, 38303, 38368, 38876, 39299, 39389, 39633, 39638, 39643, 39804, 39880, 39889, 40475, 40721, 40722, 40789, 40797, 40801, 40873, 40880, 40972, 41118, 41203, 41287, 41312, 41572, 41639, 41655, 41742, 41760, 41761, 41917, 41934, 42005, 42093, 42104, 42273, 42352, 42372, 42516, 42519, 42680, 42697, 42760, 42792, 42847, 43021, 43134, 43198, 43367, 43446, 47978, 43462, 43540, 43650, 43703, 43707, 43825, 43926, 43958, 43983, 43996, 44081, 44142, 44225, 44235, 44241, 44288, 44368, 44408, 46362, 44496, 44499, 44546, 44679, 44749, 44765, 44841, 44849, 44911, 44940, 45039, 45044, 45077, 45143, 45193, 45198, 45201, 45206, 45225, 45309, 45475, 45485, 45575, 45641, 45668, 45818, 46031, 46063, 46082, 46130, 46132, 46135, 46149, 46236, 46238, 46272, 46297, 46327, 46354, 46453, 46462, 46476, 46493, 46503, 46504, 46553, 46685, 46703, 46738, 46766, 46792, 46993, 47055, 47110, 47115, 47128, 47191, 47203, 47271, 47272, 47406, 47439, 47468, 47548, 47565, 47566, 47609, 47615, 47662, 47682, 47689, 47768, 47800, 47819, 47830, 47840, 47841, 47850, 47863, 47865, 48009, 48033, 48070, 48076, 48088, 48113, 48129, 48148, 48162, 48210, 48233, 48361, 48363, 48387, 48388, 48422, 48588, 48603, 48613, 48679, 48746, 48765, 48822, 48847, 48903, 48911, 48966, 48968, 48969, 48988, 48998, 49055, 49111, 49116, 49122, 49186, 49191, 49195, 49334, 49410, 49419, 49468, 49485, 49487, 49492, 49539, 49554, 49613, 49636, 49653, 49760, 49768, 49770, 49839, 49865, 49890, 49897, 49921, 49928, 50113, 50197, 50207, 50213, 50262, 50268, 50281, 50342, 50411, 50444, 50461, 50527, 50599, 50689, 50725, 50744, 50751, 50819, 50823, 50843, 51037, 51076, 51096, 51207, 51219, 51220, 51261, 51463, 51618, 51685, 51724, 51790, 51797, 51823, 51833, 51871, 51898, 51932, 51957, 51968, 51995, 52018, 52036, 52868, 52192, 52206, 52224, 52254, 52286, 52291, 52356, 52394, 52400, 52412, 52438, 52497, 52510, 52596, 52651, 52708, 52716, 52774, 52780, 52807, 52834, 53059, 53091, 53117, 53191, 53240, 53254, 53282, 53336, 53392, 53438, 53452, 53453, 53456, 53554, 53577, 53581, 53748, 53797, 53808, 53838, 53857, 54005, 54008, 54011, 54034, 54082, 54132, 54134, 54157, 54188, 54189, 54200, 54223, 54315, 54328, 54330, 54449, 54462, 54507, 54555, 54575, 54618, 54646, 54669, 54670, 54744, 54767, 54790, 54800, 54815, 54817, 54825, 54903, 54909, 54910, 54912, 54967, 55040, 55047, 55057, 55076, 55083, 55090, 55092, 55105, 55192, 55210, 55212, 55252, 55302, 55311, 55335, 55349, 55404, 55502, 55579, 55582, 55586, 55626, 55695, 55736, 55742, 55744, 55757, 55785, 55806, 55879, 55882, 55985, 55986, 55990, 56037, 56087, 56106, 56194, 56253, 56323, 56354, 56370, 56383, 56438, 56453, 56465, 56505, 56518, 56587, 56621, 56637, 56658, 56661, 56667, 56741, 56814, 56833, 56834, 56881, 56890, 56908, 56919, 56950, 56953, 56958, 57018, 57049, 57101, 57661, 57119, 57148, 57166, 57281, 57288, 57298, 57318, 57333, 57345, 57354, 57380, 57407, 57470, 57491, 57542, 57591, 57597, 57615, 57619, 57680, 57707, 57718, 57797, 57810, 57857, 57878, 57924, 57936

48 48
1.00
0
0.00

2
col_vals_between
 col_vals_between()

SiteID

[0, 57,944]

48 48
1.00
0
0.00

3
col_vals_make_set
 col_vals_make_set()

SiteID

57680, 51833, 52192, 55090, 50725, 48033, 56370, 47191, 48422, 51957, 51220, 54967, 55985, 55744, 56587, 56194, 55695, 55311, 55502, 50461, 51995, 48076, 53059, 57281, 47272, 54315, 51463, 56890, 56667, 56833, 53577, 54618, 49487, 48088, 56741, 54462, 48588, 52224, 56106, 52254, 48822, 49122, 51037, 56465, 54800, 57857, 54449, 56383, 48162, 56253

51 49
0.96
2
0.04

4
rows_distinct
 rows_distinct()

SiteID, Iteration

48 48
1.00
0
0.00

5
col_vals_not_null
 col_vals_not_null()

User_Name

48 48
1.00
0
0.00

6
col_vals_not_null
 col_vals_not_null()

Personnel

48 48
1.00
0
0.00

7
col_is_date
 col_is_date()

Date

1 1
1.00
0
0.00

8
col_vals_gt
 col_vals_gt()

Date

2021-07-01

48 48
1.00
0
0.00

9
col_vals_regex
 col_vals_regex()

CameraID

^[a-zA-Z]{2}[0-9]{8}$

48 0
0.00
48
1.00

10
col_vals_in_set
 col_vals_in_set()

CameraID

PM116, PM115, PM122, PM57, PM149, PM40, PM129, PM38, PM7, PM6, PM51, PM58, PM44, PM136, PM106, PM128, PM34, PM125, PM121, PM109, PM139, PM153, PM152, PM150, PM121, PM59, PM110, PM5, PM43, AM126, PM45, PM154, PM133, PM120, PM42, PM114, PM48, PM112, PM14, PM124, PM53, PM119, PM39, PM8, PM81, PM148, PM60, TM137, PM123, PM3

48 46
0.96
2
0.04

2023-03-27 10:51:13 AEDT < 1 s 2023-03-27 10:51:13 AEDT

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Citation

For attribution, please cite this work as

Cally (2023, March 3). Justin's Code Blog: Deer Monitoring Data Quality Statewide Surveys By Wildlife Unlimited. Retrieved from https://justincally.github.io/blog/posts/2023-03-03-deer-dq-23/

BibTeX citation

@misc{cally2022deerdataquality23,
  author = {Cally, Justin G},
  title = {Justin's Code Blog: Deer Monitoring Data Quality Statewide Surveys By Wildlife Unlimited},
  url = {https://justincally.github.io/blog/posts/2023-03-03-deer-dq-23/},
  year = {2023}
}