Skip to contents

Download/update the data and save to your cache.

renmods_update(type = "all")

Connect to the database ENMODS table

db <- renmods_connect()
#> ℹ Connecting to "this_yr", "yr_2_5", "yr_5_10", and "historic" data
#> ✔ this_yr: Last downloaded 2026-03-05 10:38:10 (within 1 week(s))
#> ✔ yr_2_5: Last downloaded 2026-03-05 17:29:05 (within 26 week(s))
#> ✔ yr_5_10: Last downloaded 2026-03-05 10:37:22 (within 26 week(s))
#> ✔ historic: Last downloaded 2026-03-05 17:31:30 (within 26 week(s))

Optionally, prefilter by data type or date range.

db <- renmods_connect(type = "this_yr")
#> ℹ Connecting to "this_yr" data
#> ✔ this_yr: Last downloaded 2026-03-05 10:38:10 (within 1 week(s))
db <- renmods_connect(dates = c("2024-12-15", "2025-01-15"))
#> ℹ Connecting to "this_yr" and "yr_2_5" data for dates between 2024-12-15 and 2025-01-15
#> ✔ this_yr: Last downloaded 2026-03-05 10:38:10 (within 1 week(s))
#> ✔ yr_2_5: Last downloaded 2026-03-05 17:29:05 (within 26 week(s))
db <- renmods_connect(dates = c("2026-01-01", "2026-01-31"))
#> ℹ Connecting to "this_yr" data for dates between 2026-01-01 and 2026-01-31
#> ✔ this_yr: Last downloaded 2026-03-05 10:38:10 (within 1 week(s))

Collect the data into a data frame (from a database connection) for working/saving. The smaller the data set and the fewer data types, the fast this will go.

df <- collect(db)

Or use the dplyr package to do more filtering before you collect the data.

First we’ll check out what’s in the data by exploring the first couple data points

glimpse(db)
#> Rows: ??
#> Columns: 68
#> Database: DuckDB 1.4.4 [steffi@Linux 6.17.0-14-generic:R 4.5.2/:memory:]
#> $ Ministry_Contact                <chr> "Breanne Hill", "Breanne Hill", "Yihting Lim", "Breanne Hill", "Jenn…
#> $ Sampling_Agency                 <chr> "74 - Permittee", "74 - Permittee", "74 - Permittee", "74 - Permitte…
#> $ Project                         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Project_Name                    <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Work_Order_number               <chr> "VA26A0226", "VA26A1580", NA, "VA26A0232", "VA26A0622", "VA26A0581",…
#> $ Location_ID                     <chr> "E303052", "E331284", "E206805", "E298312", "E336167", "E336883", "E…
#> $ Location_Name                   <chr> "MINE WATER TREATMENT PLANT INFLUENT PRETIUM", "BLACKWATER MINE PE11…
#> $ Location_Type                   <chr> "In-Plant", "River, Stream, or Creek", "River, Stream, or Creek", "R…
#> $ Location_Latitude               <dbl> 56.46830, 53.27730, 49.57360, 56.46960, 49.36102, 53.08952, 56.05830…
#> $ Location_Longitude              <dbl> -130.1857, -124.8541, -125.5814, -130.1878, -120.4950, -121.5930, -1…
#> $ Location_Elevation              <dbl> NA, NA, NA, 1400, NA, NA, NA, NA, NA, NA, 382, NA, NA, NA, NA, NA, N…
#> $ Location_Elevation_Units        <chr> NA, NA, NA, "metre", NA, NA, NA, NA, NA, NA, "metre", NA, NA, NA, NA…
#> $ Location_Group                  <chr> NA, NA, "6858", "107835", "261", NA, "8044", "17756", "17679", "1655…
#> $ Field_Visit_Start_Time          <dttm> 2026-01-05 22:35:00, 2026-01-17 22:20:00, 2026-01-28 08:00:00, 2026…
#> $ Field_Visit_End_Time            <dttm> NA, NA, NA, NA, NA, 2026-01-08 22:40:00, NA, NA, NA, NA, 2026-01-13…
#> $ Field_Visit_Participants        <chr> "B G    G W", "BWG", NA, "B G    G W", "AN    MM", "AH    JTD    LT"…
#> $ Field_Comment                   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Field_Filtered                  <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE…
#> $ Field_Filtered_Comment          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Field_Preservative              <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Field_Device_ID                 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Field_Device_Type               <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Sampling_Context_Tag            <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Collection_Method               <chr> "Time Composite: Segmented Discrete", "Grab", "Grab", "Grab", "Grab"…
#> $ Medium                          <chr> "Water - Waste", "Water - Fresh", "Water - Fresh", "Water - Fresh", …
#> $ Taxonomy                        <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Taxonomy_Common_Name            <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Depth_Upper                     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Depth_Lower                     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Depth_Unit                      <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Observed_Date_Time              <dttm> 2026-01-05 22:35:00, 2026-01-17 22:20:00, 2026-01-28 08:00:00, 2026…
#> $ Observed_Date_Time_Start        <chr> "2026-01-05T14:35-08:00", "2026-01-17T14:20-08:00", "2026-01-28T00:0…
#> $ Observed_Date_Time_End          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Observed_Property_ID            <chr> "Cadmium Total (fl. conc.)", "Vanadium Dissolved (fl. conc.)", "Alka…
#> $ Observed_Property_Description   <chr> "Metals - Total; EMS code: CD-T", "Metals - Dissolved; EMS code: V--…
#> $ Observed_Property_Analysis_Type <chr> "CHEMICAL", "CHEMICAL", "CHEMICAL", "CHEMICAL", "CHEMICAL", "CHEMICA…
#> $ Observed_Property_Result_Type   <chr> "NUMERIC", "NUMERIC", "NUMERIC", "NUMERIC", "NUMERIC", "NUMERIC", "N…
#> $ Observed_Property_Name          <chr> "CD-T", "V--D", "0102", "AS-T", "MG-D", "NI-D", "V--T", "AL-T", "V--…
#> $ CAS_Number                      <chr> "7440-43-9", "7440-62-2", NA, "7440-38-2", "7439-95-4", "7440-02-0",…
#> $ Result_Value                    <dbl> 2.8900e-03, 5.0000e-04, 2.7600e+01, 3.5200e-03, 6.2700e+01, 8.0000e-…
#> $ Method_Detection_Limit          <dbl> 1e-05, 5e-04, 1e+00, 1e-04, 5e-03, 5e-04, 5e-04, 3e-03, 5e-04, 5e-05…
#> $ Method_Reporting_Limit          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Result_Unit                     <chr> "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/…
#> $ Detection_Condition             <chr> NA, "NOT_DETECTED", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Composite_Stat                  <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Fraction                        <chr> "TOTAL", "DISSOLVED", "TOTAL", "TOTAL", "DISSOLVED", "DISSOLVED", "T…
#> $ Data_Classification             <chr> "LAB", "LAB", "LAB", "LAB", "LAB", "LAB", "LAB", "LAB", "LAB", "LAB"…
#> $ Analyzing_Agency                <chr> "ALS", "ALS", "CAR", "ALS", "ALS", "ALS", "ALS", "ALS", "ALS", "ALS"…
#> $ Analyzing_Agency_Full_Name      <chr> "ALS Global", "ALS Global", "CARO Environmental Services", "ALS Glob…
#> $ Analysis_Method                 <chr> "Aliquot:HNO3/HCL dig:ICPMS", "Filt.:Acid:ICPMS", "Auto Potentiometr…
#> $ Analyzed_Date_Time              <chr> "2026-01-10T00:00-08:00", "2026-01-26T00:00-08:00", "2026-02-05T15:4…
#> $ Result_Status                   <chr> "Preliminary", "Preliminary", "Preliminary", "Preliminary", "Prelimi…
#> $ Result_Grade                    <chr> "Ungraded", "Ungraded", "Ungraded", "Ungraded", "Ungraded", "Ungrade…
#> $ Activity_Name                   <chr> "4793547;REGULAR;;Water - Waste;E303052;2026-01-05T14:35:00-08:00;Ti…
#> $ Tissue_Type                     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Lab_Arrival_Temperature         <dbl> NA, NA, 9, NA, NA, NA, NA, NA, NA, NA, 6, 12, NA, 3, NA, 17, 9, NA, …
#> $ Specimen_Name                   <chr> "Metals - Total", "Metals - Dissolved", "Major Ions", "Metals - Tota…
#> $ Lab_Quality_Flag                <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Lab_Arrival_Date_Time           <chr> "2026-01-06T21:15-08:00", "2026-01-22T11:45-08:00", "2026-02-02T11:4…
#> $ Lab_Prepared_Date_Time          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Lab_Sample_ID                   <chr> "003", "004", "26B0079-02", "001", "005", "003", "003", "002", "008"…
#> $ Lab_Dilution_Factor             <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Lab_Comment                     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Lab_Batch_ID                    <chr> "VA26A0226", "VA26A1580", "B6B2050", "VA26A0232", "VA26A0622", "VA26…
#> $ QC_Type                         <chr> "NORMAL", "NORMAL", "NORMAL", "NORMAL", "NORMAL", "NORMAL", "NORMAL"…
#> $ QC_Source_Activity_Name         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ Analysis_Method_ID              <chr> "F082", "F032", "X310", "F082", "F032", "F032", "F082", "F082", "F08…
#> $ filename                        <chr> "/home/steffi/.local/share/R/renmods/this_yr.csv.gz", "/home/steffi/…

Remind yourself of the column names

colnames(db)
#>  [1] "Ministry_Contact"                "Sampling_Agency"                 "Project"                        
#>  [4] "Project_Name"                    "Work_Order_number"               "Location_ID"                    
#>  [7] "Location_Name"                   "Location_Type"                   "Location_Latitude"              
#> [10] "Location_Longitude"              "Location_Elevation"              "Location_Elevation_Units"       
#> [13] "Location_Group"                  "Field_Visit_Start_Time"          "Field_Visit_End_Time"           
#> [16] "Field_Visit_Participants"        "Field_Comment"                   "Field_Filtered"                 
#> [19] "Field_Filtered_Comment"          "Field_Preservative"              "Field_Device_ID"                
#> [22] "Field_Device_Type"               "Sampling_Context_Tag"            "Collection_Method"              
#> [25] "Medium"                          "Taxonomy"                        "Taxonomy_Common_Name"           
#> [28] "Depth_Upper"                     "Depth_Lower"                     "Depth_Unit"                     
#> [31] "Observed_Date_Time"              "Observed_Date_Time_Start"        "Observed_Date_Time_End"         
#> [34] "Observed_Property_ID"            "Observed_Property_Description"   "Observed_Property_Analysis_Type"
#> [37] "Observed_Property_Result_Type"   "Observed_Property_Name"          "CAS_Number"                     
#> [40] "Result_Value"                    "Method_Detection_Limit"          "Method_Reporting_Limit"         
#> [43] "Result_Unit"                     "Detection_Condition"             "Composite_Stat"                 
#> [46] "Fraction"                        "Data_Classification"             "Analyzing_Agency"               
#> [49] "Analyzing_Agency_Full_Name"      "Analysis_Method"                 "Analyzed_Date_Time"             
#> [52] "Result_Status"                   "Result_Grade"                    "Activity_Name"                  
#> [55] "Tissue_Type"                     "Lab_Arrival_Temperature"         "Specimen_Name"                  
#> [58] "Lab_Quality_Flag"                "Lab_Arrival_Date_Time"           "Lab_Prepared_Date_Time"         
#> [61] "Lab_Sample_ID"                   "Lab_Dilution_Factor"             "Lab_Comment"                    
#> [64] "Lab_Batch_ID"                    "QC_Type"                         "QC_Source_Activity_Name"        
#> [67] "Analysis_Method_ID"              "filename"

Now we can filter by column values and collect the data into R

df <- db |>
  filter(Location_ID %in% c("E303052", "E309247")) |>
  collect()

df
#> # A tibble: 1,193 × 68
#>    Ministry_Contact Sampling_Agency Project Project_Name Work_Order_number Location_ID Location_Name          
#>    <chr>            <chr>           <chr>   <chr>        <chr>             <chr>       <chr>                  
#>  1 Breanne Hill     74 - Permittee  <NA>    <NA>         VA26A0226         E303052     MINE WATER TREATMENT P…
#>  2 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600203         E309247     CONUMA - BRULE MINE PE…
#>  3 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600007         E309247     CONUMA - BRULE MINE PE…
#>  4 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600178         E309247     CONUMA - BRULE MINE PE…
#>  5 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600095         E309247     CONUMA - BRULE MINE PE…
#>  6 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600009         E309247     CONUMA - BRULE MINE PE…
#>  7 Breanne Hill     74 - Permittee  <NA>    <NA>         VA26A1318         E303052     MINE WATER TREATMENT P…
#>  8 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600095         E309247     CONUMA - BRULE MINE PE…
#>  9 Winnie Chan      74 - Permittee  <NA>    <NA>         FJ2600040         E309247     CONUMA - BRULE MINE PE…
#> 10 Breanne Hill     74 - Permittee  <NA>    <NA>         VA26A1318         E303052     MINE WATER TREATMENT P…
#> # ℹ 1,183 more rows
#> # ℹ 61 more variables: Location_Type <chr>, Location_Latitude <dbl>, Location_Longitude <dbl>,
#> #   Location_Elevation <dbl>, Location_Elevation_Units <chr>, Location_Group <chr>,
#> #   Field_Visit_Start_Time <dttm>, Field_Visit_End_Time <dttm>, Field_Visit_Participants <chr>,
#> #   Field_Comment <chr>, Field_Filtered <lgl>, Field_Filtered_Comment <chr>, Field_Preservative <chr>,
#> #   Field_Device_ID <chr>, Field_Device_Type <chr>, Sampling_Context_Tag <chr>, Collection_Method <chr>,
#> #   Medium <chr>, Taxonomy <chr>, Taxonomy_Common_Name <chr>, Depth_Upper <dbl>, Depth_Lower <dbl>, …

You can also pre-select your columns of interest.

df <- db |>
  filter(Location_ID %in% c("E303052", "E309247")) |>
  select(
    "Location_ID",
    "Location_Name",
    "Observed_Date_Time",
    "Observed_Property_Name",
    "Result_Value",
    "Result_Unit",
    "Analysis_Method_ID"
  ) |>
  collect()

df
#> # A tibble: 1,193 × 7
#>    Location_ID Location_Name               Observed_Date_Time  Observed_Property_Name Result_Value Result_Unit
#>    <chr>       <chr>                       <dttm>              <chr>                         <dbl> <chr>      
#>  1 E303052     MINE WATER TREATMENT PLANT… 2026-01-05 22:35:00 CD-T                      0.00289   mg/L       
#>  2 E309247     CONUMA - BRULE MINE PE1767… 2026-01-28 19:32:00 V--T                      0.001     mg/L       
#>  3 E309247     CONUMA - BRULE MINE PE1767… 2026-01-02 20:19:01 P--T                      0.008     mg/L       
#>  4 E309247     CONUMA - BRULE MINE PE1767… 2026-01-25 20:08:00 SR-T                      0.322     mg/L       
#>  5 E309247     CONUMA - BRULE MINE PE1767… 2026-01-14 19:59:00 0015                     26.8       NTU        
#>  6 E309247     CONUMA - BRULE MINE PE1767… 2026-01-04 21:12:00 AS-T                      0.00028   mg/L       
#>  7 E303052     MINE WATER TREATMENT PLANT… 2026-01-19 22:45:00 1110                     27.9       mg/L       
#>  8 E309247     CONUMA - BRULE MINE PE1767… 2026-01-14 19:59:00 0039                    206         mV         
#>  9 E309247     CONUMA - BRULE MINE PE1767… 2026-01-07 20:20:00 BI-T                      0.0001    mg/L       
#> 10 E303052     MINE WATER TREATMENT PLANT… 2026-01-19 22:45:00 CD-D                      0.0000214 mg/L       
#> # ℹ 1,183 more rows
#> # ℹ 1 more variable: Analysis_Method_ID <chr>

Don’t forget to close the connection to the database