Modified 2026-01-26 @ 16:40

1 Load Libraries

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.2
## ✔ ggplot2   3.4.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(plotly)
## 
## Attaching package: 'plotly'
## 
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## 
## The following object is masked from 'package:stats':
## 
##     filter
## 
## The following object is masked from 'package:graphics':
## 
##     layout
library(htmlwidgets)
library(stats) # for aggregate function mean
library(gridExtra) # combine plots
## 
## Attaching package: 'gridExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     combine

2 Data Import

# Data Import
################################# 
# Crew Hours and Amount Removed Data

# To read and display Indigenous Languages save as CSV UTF-8
# and use fileEncoding="UTF-8" to keep Aboriginal characters
crew_data <- read.csv("data/HATRestorationCrewData-2022-2025-sepsp.csv", fileEncoding="UTF-8")

# Matson Field Logs
matson_fieldlog_2022_2025 <- read.csv("data/MatsonMattocksFieldLog-2016-2024/Matson-Field-Log-2022-2025.csv", fileEncoding="UTF-8")
matson_fieldlog_2024 <- read.csv("data/MatsonMattocksFieldLog-2016-2024/Matson-Field-Log-2024-NLM.csv", fileEncoding="UTF-8")
#################################

## Cover data from original Meadow Monitoring Spreadsheet 2025.xlsx & Meadow Monitoring Spreadsheet 2024.xlsx
# separated by year and site
# Oak Haven Cover data 2025
## change invasive grass to mixed grass
cover_OH_2024 <- read.csv("data/HAT-MeadowMonitoring-2024-OakHaven.csv", fileEncoding="UTF-8")
cover_OH_2025 <- read.csv("data/HAT-MeadowMonitoring-2025-OakHaven.csv", fileEncoding="UTF-8")
cover_MCA_2024 <- read.csv("data/HAT-MeadowMonitoring-2024-Matson.csv", fileEncoding="UTF-8")
cover_MCA_2025 <- read.csv("data/HAT-MeadowMonitoring-2025-Matson.csv", fileEncoding="UTF-8")

#################################

# Sites from HAT Covenants website
HAT_sites <- read.csv("data/HAT-Sites.csv")
HAT_sites
##    ID                     Site      Lat       Lng    Municipality
## 1  HP           Havenwood Park 48.41376 -123.5071         Colwood
## 2 MCA Matson Conservation Area 48.42930 -123.3954       Esquimalt
## 3 OHP           Oak Haven Park 48.56419 -123.4471 Central Saanich
##                                         FirstNations Park_Creation
## 1 Songhees, Esquimalt, WSANEC, Beecher Bay, T'Sou-ke          2002
## 2                                Songhees, Esquimalt            NA
## 3                                             W̱SÁNEĆ          1997
##                               HAT_Status Date
## 1                            Co-Covenant   NA
## 2 Donation by Mandalay Developments Ltd. 2004
## 3                            Co-Covenant 2004
##                                           Co_Covenant Size_ha
## 1                                     City of Colwood    16.5
## 2 Nature Conservancy of Canada; Township of Esquimalt      NA
## 3                                    Land Conservancy    10.2
##                                            Ecosystems
## 1 5 wetlands; 3 small streams; 7 bedrock outcroppings
## 2                                 Garry oak ecosystem
## 3                                                    
##                                                                                                                                                                               Funding
## 1                                                                                                                                                                                    
## 2 TD FEF; Sitka Foundation; Conservation Economic Stimulus Initiative; Habitat Conservation Trust Foundation; Environment and Climate Change Canada; Esquimalt Property Tax Exemption
## 3                                                                                                                                                                                    
##       Volunteer_Stewardship  X
## 1 Friends of Havenwood Park NA
## 2   Friends of Matson Lands NA
## 3 Friends of Oak Haven Park NA
##                                                           Top_5_Invasives
## 1                                      Himalayan blackberry, Scotch broom
## 2                 daphne, English ivy, Himalayan blackberry, Scotch broom
## 3 daphne, English ivy, Himalayan blackberry, Scotch broom, shiny geranium
#################################

#################################
######  Cover Data ###### 
# Oak Haven Meta Data from cover data worksheets
oakhaven_2025_metadata <- read.csv("data/HAT-OH-MetaData.csv")
oakhaven_2025_metadata
##                  ExSpTabTitle       Site                     Transect.Baseline
## 1   2025 Oak Haven Treated #1 Oak Haven  transect base line #1 - treated area 
## 2 2025 Oak Haven UnTreated #1 Oak Haven        Transect baseline #1 untreated 
## 3 2025 Oak Haven Untreated #2 Oak Haven        Transect baseline #2 untreated 
## 4   2025 Oak Haven Treated #2 Oak Haven  transect base line #1 - treated area 
##   Lat.and.Long.of.Baseline.startpoint
## 1                 48.56456 -123.44570
## 2                48.56401, -123.44773
## 3                48.56401, -123.44773
## 4                 48.56456 -123.44570
##                                                                                                                            Description
## 1 Started transect point starting at mossy log base of dead tree, at mossy branch sticking out upwards, transect line facing 296* NW. 
## 2                              Standing next to solo Garry oak in open meadow, near cluster of mossy rocks, facing upslope 10* North. 
## 3                              Standing next to solo Garry oak in open meadow, near cluster of mossy rocks, facing upslope 10* North. 
## 4 Started transect point starting at mossy log base of dead tree, at mossy branch sticking out upwards, transect line facing 296* NW. 
##   Length.of.transect Direction.of.transect.from.baseline.start.point
## 1                 9m                                         296* NW
## 2              15 m                                           10 * N
## 3              15 m                                           10 * N
## 4                 9m                                         296* NW
##   Treated.year.or.Untreated       Date                  Participants
## 1              Treated 2024 2025-04-02 Dana Jonhson, Lauren McIndoe 
## 2               Untreated   2025-04-03              Dana J, Lauren M
## 3               Untreated   2025-04-03              Chelsea & Hannah
## 4              Treated 2024 2025-04-02              Chelsea & Hannah
#################################

#################################
###### Presence Datat GRP ###### 
# OH Presence Data from GRP Project Site #71 
# species presence reference
OH_GRP_Sp_Presence <- read.csv("data/GRP-Site-SpeciesCover-Presence-SQL-OHP-72.csv")
OH_GRP_Sp_Presence
##    siteid projectid      Site Subregion treatmentid v_year_measure replicate
## 1      72         1 Oak Haven      C-SP        1_72           2006         1
## 2      72         1 Oak Haven      C-SP        1_72           2006         1
## 3      72         1 Oak Haven      C-SP        1_72           2006         1
## 4      72         1 Oak Haven      C-SP        1_72           2006         1
## 5      72         1 Oak Haven      C-SP        1_72           2006         1
## 6      72         1 Oak Haven      C-SP        1_72           2006         1
## 7      72         1 Oak Haven      C-SP        1_72           2006         1
## 8      72         1 Oak Haven      C-SP        1_72           2006         1
## 9      72         1 Oak Haven      C-SP        1_72           2006         1
## 10     72         1 Oak Haven      C-SP        1_72           2006         1
## 11     72         1 Oak Haven      C-SP        1_72           2006         1
## 12     72         1 Oak Haven      C-SP        1_72           2006         1
## 13     72         1 Oak Haven      C-SP        1_72           2006         1
## 14     72         1 Oak Haven      C-SP        1_72           2006         1
## 15     72         1 Oak Haven      C-SP        1_72           2006         1
## 16     72         1 Oak Haven      C-SP        1_72           2006         1
## 17     72         1 Oak Haven      C-SP        1_72           2006         1
## 18     72         1 Oak Haven      C-SP        1_72           2006         1
## 19     72         1 Oak Haven      C-SP        1_72           2006         1
## 20     72         1 Oak Haven      C-SP        1_72           2006         1
## 21     72         1 Oak Haven      C-SP        1_72           2006         1
## 22     72         1 Oak Haven      C-SP        1_72           2006         1
## 23     72         1 Oak Haven      C-SP        1_72           2006         1
## 24     72         1 Oak Haven      C-SP        1_72           2006         1
## 25     72         1 Oak Haven      C-SP        1_72           2006         1
## 26     72         1 Oak Haven      C-SP        1_72           2006         1
## 27     72         1 Oak Haven      C-SP        1_72           2006         1
## 28     72         1 Oak Haven      C-SP        1_72           2006         1
## 29     72         1 Oak Haven      C-SP        1_72           2006         1
## 30     72         1 Oak Haven      C-SP        1_72           2006         1
## 31     72         1 Oak Haven      C-SP        1_72           2006         1
## 32     72         1 Oak Haven      C-SP        1_72           2006         1
## 33     72         1 Oak Haven      C-SP        1_72           2006         1
## 34     72         1 Oak Haven      C-SP        1_72           2006         1
## 35     72         1 Oak Haven      C-SP        1_72           2006         1
## 36     72         1 Oak Haven      C-SP        1_72           2006         1
## 37     72         1 Oak Haven      C-SP        1_72           2006         1
## 38     72         1 Oak Haven      C-SP        1_72           2006         1
## 39     72         1 Oak Haven      C-SP        1_72           2006         1
## 40     72         1 Oak Haven      C-SP        1_72           2006         1
## 41     72         1 Oak Haven      C-SP        1_72           2006         1
## 42     72         1 Oak Haven      C-SP        1_72           2006         1
## 43     72         1 Oak Haven      C-SP        1_72           2006         1
## 44     72         1 Oak Haven      C-SP        1_72           2006         1
## 45     72         1 Oak Haven      C-SP        1_72           2006         1
## 46     72         1 Oak Haven      C-SP        1_72           2006         1
## 47     72         1 Oak Haven      C-SP        1_72           2006         1
## 48     72         1 Oak Haven      C-SP        1_72           2006         1
## 49     72         1 Oak Haven      C-SP        1_72           2006         1
## 50     72         1 Oak Haven      C-SP        1_72           2006         1
## 51     72         1 Oak Haven      C-SP        1_72           2006         1
## 52     72         1 Oak Haven      C-SP        1_72           2006         1
## 53     72         1 Oak Haven      C-SP        1_72           2006         1
## 54     72         1 Oak Haven      C-SP        1_72           2006         1
## 55     72         1 Oak Haven      C-SP        1_72           2006         1
## 56     72         1 Oak Haven      C-SP        1_72           2006         1
## 57     72         1 Oak Haven      C-SP        1_72           2006         1
## 58     72         1 Oak Haven      C-SP        1_72           2006         1
## 59     72         1 Oak Haven      C-SP        1_72           2006         1
## 60     72         1 Oak Haven      C-SP        1_72           2006         1
## 61     72         1 Oak Haven      C-SP        1_72           2006         1
## 62     72         1 Oak Haven      C-SP        1_72           2006         1
## 63     72         1 Oak Haven      C-SP        1_72           2006         1
## 64     72         1 Oak Haven      C-SP        1_72           2006         1
## 65     72         1 Oak Haven      C-SP        1_72           2006         1
## 66     72         1 Oak Haven      C-SP        1_72           2006         1
## 67     72         1 Oak Haven      C-SP        1_72           2006         1
## 68     72         1 Oak Haven      C-SP        1_72           2006         1
## 69     72         1 Oak Haven      C-SP        1_72           2006         1
## 70     72         1 Oak Haven      C-SP        1_72           2006         1
## 71     72         1 Oak Haven      C-SP        1_72           2006         1
## 72     72         1 Oak Haven      C-SP        1_72           2006         1
## 73     72         1 Oak Haven      C-SP        1_72           2006         1
## 74     72         1 Oak Haven      C-SP        1_72           2006         1
## 75     72         1 Oak Haven      C-SP        1_72           2006         1
## 76     72         1 Oak Haven      C-SP        1_72           2006         1
## 77     72         1 Oak Haven      C-SP        1_72           2006         1
## 78     72         1 Oak Haven      C-SP        1_72           2006         1
## 79     72         1 Oak Haven      C-SP        1_72           2006         1
## 80     72         1 Oak Haven      C-SP        1_72           2006         1
## 81     72         1 Oak Haven      C-SP        1_72           2006         1
## 82     72         1 Oak Haven      C-SP        1_72           2006         1
## 83     72         1 Oak Haven      C-SP        1_72           2006         1
## 84     72         1 Oak Haven      C-SP        1_72           2006         1
## 85     72         1 Oak Haven      C-SP        1_72           2006         1
## 86     72         1 Oak Haven      C-SP        1_72           2006         1
## 87     72         1 Oak Haven      C-SP        1_72           2006         1
## 88     72         1 Oak Haven      C-SP        1_72           2006         1
## 89     72         1 Oak Haven      C-SP        1_72           2006         1
## 90     72         1 Oak Haven      C-SP        1_72           2006         1
## 91     72         1 Oak Haven      C-SP        1_72           2006         1
## 92     72         1 Oak Haven      C-SP        1_72           2006         1
##     speciesid speciesorigin response responselevel responsemetric
## 1     Ger_dis        exotic        1       species       presence
## 2     Lin_bic        native        1       species       presence
## 3     Myo_dis        exotic        1       species       presence
## 4     Nem_par        native        1       species       presence
## 5     Ple_mac        native        1       species       presence
## 6     She_arv        exotic        1       species       presence
## 7     Sis_off        exotic        1       species       presence
## 8     Tri_dub        exotic        1       species       presence
## 9     Tri_wil        native        1       species       presence
## 10    Ver_arv        exotic        1       species       presence
## 11    Vic_hir        exotic        1       species       presence
## 12    Vic_sat        exotic        1       species       presence
## 13    Air_car        exotic        1       species       presence
## 14    Air_pra        exotic        1       species       presence
## 15    Bro_hor        exotic        1       species       presence
## 16    Bro_rig        exotic        1       species       presence
## 17    Bro_ste        exotic        1       species       presence
## 18    Cyn_ech        exotic        1       species       presence
## 19    Poa_ann        exotic        1       species       presence
## 20    Vul_bro        exotic        1       species       presence
## 21    Vul_myu        exotic        1       species       presence
## 22    Dau_car        exotic        1       species       presence
## 23    Ero_cic        exotic        1       species       presence
## 24    Lac_mur        exotic        1       species       presence
## 25    Lam_pur        exotic        1       species       presence
## 26    Pte_aqu        native        1       species       presence
## 27    Car_ino        native        1       species       presence
## 28    Dod_hen        native        1       species       presence
## 29    Lat_nev        native        1       species       presence
## 30    Lit_par        native        1       species       presence
## 31    Mic_dou        native        1       species       presence
## 32    Moe_mac        native        1       species       presence
## 33    Ran_occ        native        1       species       presence
## 34    San_cra        native        1       species       presence
## 35    Tri_bor        native        1       species       presence
## 36  G_Bro_spp       unknown        1       species       presence
## 37    Ame_aln        native        1       species       presence
## 38    Cir_vul        exotic        1       species       presence
## 39    Epi_ang        native        1       species       presence
## 40    Fra_vir        native        1       species       presence
## 41 G_Clay_spp        native        1       species       presence
## 42  G_Sen_spp        exotic        1       species       presence
## 43  G_Son_spp        exotic        1       species       presence
## 44    Rub_par        native        1       species       presence
## 45    Ach_mil        native        1       species       presence
## 46    All_cer        native        1       species       presence
## 47   Alli_acu        native        1       species       presence
## 48    Ana_mar        native        1       species       presence
## 49    Aqu_for        native        1       species       presence
## 50    Bel_per        exotic        1       species       presence
## 51    Cer_arv        native        1       species       presence
## 52    Cir_arv        exotic        1       species       presence
## 53    Cre_cap        exotic        1       species       presence
## 54    Eri_lan        native        1       species       presence
## 55    Gal_apa        native        1       species       presence
## 56    Ger_mol        exotic        1       species       presence
## 57    Ger_rob        exotic        1       species       presence
## 58    Hyp_rad        exotic        1       species       presence
## 59    Lap_com        exotic        1       species       presence
## 60    Leu_vul        exotic        1       species       presence
## 61    Luz_mul        native        1       species       presence
## 62    Mim_gut        native        1       species       presence
## 63    Nar_pse        exotic        1       species       presence
## 64    Pla_lan        exotic        1       species       presence
## 65    Pot_rec        exotic        1       species       presence
## 66    Pru_vul        native        1       species       presence
## 67    Rum_ace        exotic        1       species       presence
## 68    Ste_med        exotic        1       species       presence
## 69    Tri_hya        native        1       species       presence
## 70    Ant_odo        exotic        1       species       presence
## 71    Cyn_cri        exotic        1       species       presence
## 72    Dac_glo        exotic        1       species       presence
## 73    Dan_cal        native        1       species       presence
## 74    Ely_ely        native        1       species       presence
## 75    Fra_ves        native        1       species       presence
## 76    Hol_lan        exotic        1       species       presence
## 77   Meli_sub        native        1       species       presence
## 78    Poa_com        exotic        1       species       presence
## 79    Poa_pra        exotic        1       species       presence
## 80    Ber_aqu        native        1       species       presence
## 81    Cyt_sco        exotic        1       species       presence
## 82    Hed_hel        exotic        1       species       presence
## 83    Hol_dis        native        1       species       presence
## 84    Lon_his        native        1       species       presence
## 85    Oem_cer        native        1       species       presence
## 86    Rub_pra        exotic        1       species       presence
## 87    Rub_urs        native        1       species       presence
## 88    Sym_alb        native        1       species       presence
## 89    Ace_mac        native        1       species       presence
## 90    Arb_men        native        1       species       presence
## 91    Pse_men        native        1       species       presence
## 92    Que_gar        native        1       species       presence
##    measurementscale measurementmetric          genus         species
## 1            varied                m2       Geranium       dissectum
## 2            varied                m2      Linanthus         bicolor
## 3            varied                m2       Myosotis        discolor
## 4            varied                m2      Nemophila      parviflora
## 5            varied                m2     Plectritis       macrocera
## 6            varied                m2      Sherardia        arvensis
## 7            varied                m2     Sisymbrium      officinale
## 8            varied                m2      Trifolium          dubium
## 9            varied                m2      Trifolium     willdenovii
## 10           varied                m2       Veronica        arvensis
## 11           varied                m2          Vicia         hirsuta
## 12           varied                m2          Vicia          sativa
## 13           varied                m2           Aira    caryophyllea
## 14           varied                m2           Aira         praecox
## 15           varied                m2         Bromus      hordeaceus
## 16           varied                m2         Bromus         rigidus
## 17           varied                m2         Bromus        sterilis
## 18           varied                m2      Cynosurus       echinatus
## 19           varied                m2            Poa           annua
## 20           varied                m2         Vulpia       bromoides
## 21           varied                m2         Vulpia          myuros
## 22           varied                m2         Daucus          carota
## 23           varied                m2        Erodium      cicutarium
## 24           varied                m2        Lactuca         muralis
## 25           varied                m2         Lamium       purpureum
## 26           varied                m2      Pteridium       aquilinum
## 27           varied                m2          Carex           inops
## 28           varied                m2    Dodecatheon     hendersonii
## 29           varied                m2       Lathyrus      nevadensis
## 30           varied                m2   Lithophragma     parviflorum
## 31           varied                m2     Micromeria       douglasii
## 32           varied                m2     Moehringia     macrophylla
## 33           varied                m2     Ranunculus    occidentalis
## 34           varied                m2       Sanicula    crassicaulis
## 35           varied                m2     Trientalis        borealis
## 36           varied                m2         Bromus             spp
## 37           varied                m2    Amelanchier       alnifolia
## 38           varied                m2        Cirsium         vulgare
## 39           varied                m2      Epilobium   angustifolium
## 40           varied                m2       Fragaria      virginiana
## 41           varied                m2      Claytonia             spp
## 42           varied                m2        Senecio             spp
## 43           varied                m2        Sonchus             spp
## 44           varied                m2          Rubus     parviflorus
## 45           varied                m2       Achillea     millefolium
## 46           varied                m2         Allium         cernuum
## 47           varied                m2         Allium      acuminatum
## 48           varied                m2      Anaphalis    margaritacea
## 49           varied                m2      Aquilegia         formosa
## 50           varied                m2         Bellis        perennis
## 51           varied                m2      Cerastium         arvense
## 52           varied                m2        Cirsium         arvense
## 53           varied                m2         Crepis      capillaris
## 54           varied                m2    Eriophyllum         lanatum
## 55           varied                m2         Galium         aparine
## 56           varied                m2       Geranium           molle
## 57           varied                m2       Geranium     robertianum
## 58           varied                m2    Hypochaeris        radicata
## 59           varied                m2        Lapsana        communis
## 60           varied                m2   Leucanthemum         vulgare
## 61           varied                m2         Luzula      multiflora
## 62           varied                m2        Mimulus        guttatus
## 63           varied                m2      Narcissus pseudonarcissus
## 64           varied                m2       Plantago      lanceolata
## 65           varied                m2     Potentilla           recta
## 66           varied                m2       Prunella        vulgaris
## 67           varied                m2          Rumex      acetosella
## 68           varied                m2      Stellaria           media
## 69           varied                m2      Triteleia     hyacinthina
## 70           varied                m2   Anthoxanthum        odoratum
## 71           varied                m2      Cynosurus       cristatus
## 72           varied                m2       Dactylis       glomerata
## 73           varied                m2      Danthonia     californica
## 74           varied                m2         Elymus       elymoides
## 75           varied                m2       Fragaria           vesca
## 76           varied                m2         Holcus         lanatus
## 77           varied                m2         Melica        subulata
## 78           varied                m2            Poa       compressa
## 79           varied                m2            Poa       pratensis
## 80           varied                m2       Berberis      aquifolium
## 81           varied                m2        Cytisus       scoparius
## 82           varied                m2         Hedera           helix
## 83           varied                m2     Holodiscus        discolor
## 84           varied                m2       Lonicera       hispidula
## 85           varied                m2       Oemleria    cerasiformis
## 86           varied                m2          Rubus         praecox
## 87           varied                m2          Rubus         ursinus
## 88           varied                m2 Symphoricarpos           albus
## 89           varied                m2           Acer    macrophyllum
## 90           varied                m2        Arbutus       menziesii
## 91           varied                m2    Pseudotsuga       menziesii
## 92           varied                m2        Quercus        garryana
##           lifeform   Treated
## 1      annual forb Untreated
## 2      annual forb Untreated
## 3      annual forb Untreated
## 4      annual forb Untreated
## 5      annual forb Untreated
## 6      annual forb Untreated
## 7      annual forb Untreated
## 8      annual forb Untreated
## 9      annual forb Untreated
## 10     annual forb Untreated
## 11     annual forb Untreated
## 12     annual forb Untreated
## 13    annual grass Untreated
## 14    annual grass Untreated
## 15    annual grass Untreated
## 16    annual grass Untreated
## 17    annual grass Untreated
## 18    annual grass Untreated
## 19    annual grass Untreated
## 20    annual grass Untreated
## 21    annual grass Untreated
## 22   biennial forb Untreated
## 23   biennial forb Untreated
## 24   biennial forb Untreated
## 25   biennial forb Untreated
## 26            fern Untreated
## 27            forb Untreated
## 28            forb Untreated
## 29            forb Untreated
## 30            forb Untreated
## 31            forb Untreated
## 32            forb Untreated
## 33            forb Untreated
## 34            forb Untreated
## 35            forb Untreated
## 36           grass Untreated
## 37           shrub Untreated
## 38            forb Untreated
## 39            forb Untreated
## 40            forb Untreated
## 41     annual forb Untreated
## 42            forb Untreated
## 43     annual forb Untreated
## 44           shrub Untreated
## 45  perennial forb Untreated
## 46  perennial forb Untreated
## 47  perennial forb Untreated
## 48  perennial forb Untreated
## 49  perennial forb Untreated
## 50  perennial forb Untreated
## 51  perennial forb Untreated
## 52  perennial forb Untreated
## 53  perennial forb Untreated
## 54  perennial forb Untreated
## 55  perennial forb Untreated
## 56  perennial forb Untreated
## 57  perennial forb Untreated
## 58  perennial forb Untreated
## 59  perennial forb Untreated
## 60  perennial forb Untreated
## 61  perennial forb Untreated
## 62  perennial forb Untreated
## 63  perennial forb Untreated
## 64  perennial forb Untreated
## 65  perennial forb Untreated
## 66  perennial forb Untreated
## 67  perennial forb Untreated
## 68  perennial forb Untreated
## 69  perennial forb Untreated
## 70 perennial grass Untreated
## 71 perennial grass Untreated
## 72 perennial grass Untreated
## 73 perennial grass Untreated
## 74 perennial grass Untreated
## 75 perennial grass Untreated
## 76 perennial grass Untreated
## 77 perennial grass Untreated
## 78 perennial grass Untreated
## 79 perennial grass Untreated
## 80           shrub Untreated
## 81           shrub Untreated
## 82           shrub Untreated
## 83           shrub Untreated
## 84           shrub Untreated
## 85           shrub Untreated
## 86           shrub Untreated
## 87           shrub Untreated
## 88           shrub Untreated
## 89            tree Untreated
## 90            tree Untreated
## 91            tree Untreated
## 92            tree Untreated
#################################

#################################
###### Oak Haven Timeline ######
# Oak Haven Timeline
OH_timeline <- read.csv("data/Timeline-OH.csv")
OH_timeline
##                    What       When         EventType                    Where
## 1  OHP Monitoring Cover 2025-04-02     Cover_Monitor           Oak Haven Park
## 2  OHP Monitoring Cover 2025-04-03     Cover_Monitor           Oak Haven Park
## 3         OHP Treatment 2024-04-02   Treatment_Event           Oak Haven Park
## 4      HP Park Creation 2002-01-01      Park_Created           Havenwood Park
## 5     MCA Park Creation 1997-01-01      Park_Created Matson Conservation Area
## 6 OHP Covenant Creation 2004-01-01 Covenant_Creation           Oak Haven Park
##   LocationID             group end
## 1        OHP        monitoring  NA
## 2        OHP        monitoring  NA
## 3        OHP         treatment  NA
## 4         HP     park_creation  NA
## 5        MCA     park_creation  NA
## 6        OHP covenant_creation  NA
# Oak Haven Timeline for timevis
Timeline_OH_vis <- read.csv("data/OH_timeline_date_timevis.csv", header = TRUE, sep = ",")
Timeline_OH_vis
##                content      start       EventType          Where
## 1 OHP Monitoring Cover 2025-04-02   Cover_Monitor Oak Haven Park
## 2 OHP Monitoring Cover 2025-04-03   Cover_Monitor Oak Haven Park
## 3        OHP Treatment 2024-04-02 Treatment_Event Oak Haven Park
#################################

3 Data Exploration

3.1 HAT Crew & Field log Data

str(crew_data)
## 'data.frame':    238 obs. of  18 variables:
##  $ Order_Calc_Split                   : int  135 136 137 138 139 144 145 148 149 150 ...
##  $ Year                               : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Date                               : chr  "07-Sep" "07-Sep" "08-Sep" "08-Sep" ...
##  $ Work_Site                          : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Location                           : chr  "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" ...
##  $ Area.Cleared..m2..orig             : num  1080 1080 1175 1175 750 ...
##  $ Area.Cleared..m2.                  : num  540 540 588 588 750 ...
##  $ Biomass.Removed..m3..orig          : num  3 3 3 3 2 3 3 3 3 4 ...
##  $ Biomass.Removed..m3.               : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions            : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig      : chr  "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" ...
##  $ Invasive_Species_Cleared_upper     : chr  "Daphne" "Scotch broom" "Daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared_lower_calc: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared           : chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive                 : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours                         : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer                     : chr  "Work" "Work" "Work" "Work" ...
##  $ Notes                              : chr  "" "" "" "" ...
glimpse(crew_data)
## Rows: 238
## Columns: 18
## $ Order_Calc_Split                    <int> 135, 136, 137, 138, 139, 144, 145,…
## $ Year                                <int> 2022, 2022, 2022, 2022, 2022, 2022…
## $ Date                                <chr> "07-Sep", "07-Sep", "08-Sep", "08-…
## $ Work_Site                           <chr> "Oak Haven Park", "Oak Haven Park"…
## $ Location                            <chr> "1251 Garden Gate Dr, Brentwood Ba…
## $ Area.Cleared..m2..orig              <dbl> 1080, 1080, 1175, 1175, 750, 1200,…
## $ Area.Cleared..m2.                   <dbl> 540.0, 540.0, 587.5, 587.5, 750.0,…
## $ Biomass.Removed..m3..orig           <dbl> 3.0, 3.0, 3.0, 3.0, 2.0, 3.0, 3.0,…
## $ Biomass.Removed..m3.                <dbl> 1.5, 1.5, 1.5, 1.5, 2.0, 1.5, 1.5,…
## $ Data_Change_Assumptions             <chr> "estimate 1/2 of biomass, area, an…
## $ Invasive_Species_Cleared_orig       <chr> "Daphne, Scotch Broom", "Daphne, S…
## $ Invasive_Species_Cleared_upper      <chr> "Daphne", "Scotch broom", "Daphne"…
## $ Invasive_Species_Cleared_lower_calc <chr> "daphne", "Scotch broom", "daphne"…
## $ Invasive_Species_Cleared            <chr> "daphne", "Scotch broom", "daphne"…
## $ Native_or_Invasive                  <chr> "Invasive", "Invasive", "Invasive"…
## $ Crew_Hours                          <dbl> 22.5, 22.5, 30.0, 30.0, 22.5, 22.5…
## $ Work_Volunteer                      <chr> "Work", "Work", "Work", "Work", "W…
## $ Notes                               <chr> "", "", "", "", "", "", "", "", ""…
colnames(crew_data)
##  [1] "Order_Calc_Split"                    "Year"                               
##  [3] "Date"                                "Work_Site"                          
##  [5] "Location"                            "Area.Cleared..m2..orig"             
##  [7] "Area.Cleared..m2."                   "Biomass.Removed..m3..orig"          
##  [9] "Biomass.Removed..m3."                "Data_Change_Assumptions"            
## [11] "Invasive_Species_Cleared_orig"       "Invasive_Species_Cleared_upper"     
## [13] "Invasive_Species_Cleared_lower_calc" "Invasive_Species_Cleared"           
## [15] "Native_or_Invasive"                  "Crew_Hours"                         
## [17] "Work_Volunteer"                      "Notes"
unique(crew_data$Work_Site)
## [1] "Oak Haven Park"           "Matson Conservation Area"
## [3] "Havenwood Park"           "Yates"                   
## [5] "Camas Hill"               "Funk"                    
## [7] "Bear Hill"                "Purple Sanicle"          
## [9] "Calypso Woods"
str(matson_fieldlog_2022_2025)
## 'data.frame':    400 obs. of  21 variables:
##  $ Order_Calc_Split              : int  116 118 120 67 76 105 108 41 16 21 ...
##  $ Year                          : int  2022 2022 2022 2023 2023 2022 2022 2024 2024 2024 ...
##  $ Date                          : chr  "2022-07-06" "2022-06-22" "2022-06-08" "2023-06-21" ...
##  $ Date_orig                     : chr  "July 6 2022" "June 22 2022" "June 8 2022" "21-Jun-2023" ...
##  $ Site                          : chr  "Matson" "Matson" "Matson" "Matson" ...
##  $ Area_Cleared_m2_orig          : int  NA NA NA NA NA NA NA NA 245 220 ...
##  $ Area_Cleared_m2               : num  NA NA NA NA NA ...
##  $ Biomass_Removed_m3_orig       : num  1.5 1 1 1.5 5 3.5 3 3 2.5 2 ...
##  $ Biomass_Removed_m3            : num  0.25 0.17 0.2 0.19 0.71 1.17 1 1 0.31 0.29 ...
##  $ Data_Change_Assumptions       : chr  "estimate 1/6 of biomass, area, and work hours" "estimate 1/6 of biomass, area, and work hours" "estimate 1/5 of biomass, area, and work hours" "estimate 1/8 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig : chr  "Blackberry, Hairy cats-ear, Bachelors button, Broom, Thistle, Orchard grass" "Blackberry, Hairy cats-ear, Broom, Bachelors button, Poppies, Mustard" "Scotch thistle, Creeping buttercup, Blackberry, Bur chervil, Bachelors button" "Cleavers, Thistles, Orchard grass, Bindweed, Foxglove, Purple toadflax, Periwinkle, Scotch broom" ...
##  $ Invasive_Species_Cleared      : chr  "bachelors button" "bachelors button" "bachelors button" "bindweed" ...
##  $ Native_or_Invasive            : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours_orig               : num  17 15 12 13 19 9 12 9 13 12 ...
##  $ Crew_Hours                    : num  2.83 2.5 2.4 1.63 2.71 3 4 3 1.63 1.71 ...
##  $ Work_Volunteer                : chr  "Volunteer" "Volunteer" "Volunteer" "Volunteer" ...
##  $ Work.Activities               : chr  "Meadow maintenance removing blackberry, cats-ear, bachelors button, broom, thistle, orchard grass." "Maintenance (blackberry, cats-ear, broom, bachelors button, poppies, mustard); Weeding cages; Garbage sweep; Hauled water." "Removed scotch thistle; Weeding exclosure (buttercup, blackberry, grasses); Removed bur chervil and bachelors button." "Cleared cleavers, thistles, orchard grass, bindweed; West exclosure maintenance; Salvaged osoberry seedlings." ...
##  $ Observations                  : chr  "25 healthy plants of rattlesnake plantain orchid located in lower west woodland. Tentative alligator lizard nea"| __truncated__ "Large thriving patch of wooly eriophyllum located in apartment gardens on east side - presumably cultivated." "Small flowered alumroot (salvaged) in bloom in several places." "\"Numerous swallowtail butterflies; ocean spray shrubs in full bloom.\"" ...
##  $ Miscellaneous.and.Action.Items: chr  "Matt Fairbarns, Sara Lax and Max Mitchell on site in afternoon for site tour to identify grasses and advise on "| __truncated__ "Garbage sweep of whole site - minimal new garbage. Abandoned armchair hauled to end of Garrett. Cage around pac"| __truncated__ "Clothing items, etc still have not been removed from former campsite near tree #321." "\"HAT youth crew and others worked on site during the afternoon of 19 June. Numerous small scotch broom seedlin"| __truncated__ ...
##  $ Native.Plant.Species          : chr  "Rattlesnake plantain orchid, Ocean spray, Osoberry, Roses, Dogwood, Camas, Spring Gold" "Fir, Willow, Red-flowering currant, Arbutus, Wooly eriophyllum, Pacific yew" "Small flowered alumroot" "Osoberry, Ocean spray" ...
##  $ Wildlife                      : chr  "Alligator lizard, Garter snake, Deer" "N/A" "N/A" "Swallowtail butterflies" ...
str(matson_fieldlog_2024)
## 'data.frame':    121 obs. of  24 variables:
##  $ Order_Calc_Split              : int  42 42 42 41 41 41 37 37 36 36 ...
##  $ Year                          : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ Date                          : chr  "2024-01-03" "2024-01-03" "2024-01-03" "2024-01-10" ...
##  $ Date_orig                     : chr  "Jan 3 2024" "Jan 3 2024" "Jan 3 2024" "Jan 10 2024" ...
##  $ Site                          : chr  "Matson" "Matson" "Matson" "Matson" ...
##  $ Area_Cleared_m2_orig          : int  NA NA NA NA NA NA NA NA 28 28 ...
##  $ Area_Cleared_m2_calc          : num  NA NA NA NA NA NA NA NA 14 14 ...
##  $ Area_Cleared_m2               : num  NA NA NA NA NA NA NA NA 14 14 ...
##  $ Biomass_Removed_m3_orig       : num  4 4 4 3 3 3 4 4 7 7 ...
##  $ Biomass_Removed_m3_calc       : num  1.33 1.33 1.33 1 1 1 2 2 3.5 3.5 ...
##  $ Biomass_Removed_m3            : num  1.33 1.33 1.33 1 1 1 2 2 3.5 3.5 ...
##  $ Data_Change_Assumptions       : chr  "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig : chr  "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Non-native bulbs" ...
##  $ Invasive_Species_Cleared      : chr  "blackberry" "English ivy" "poison hemlock" "blackberry" ...
##  $ Native_or_Invasive            : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours_orig               : num  14 14 14 9 9 9 6 6 12 12 ...
##  $ Crew_Hours_calc               : num  4.67 4.67 4.67 3 3 3 3 3 6 6 ...
##  $ Crew_Hours                    : num  4.67 4.67 4.67 3 3 3 3 3 6 6 ...
##  $ Work_Volunteer                : chr  "Volunteer" "Volunteer" "Volunteer" "Volunteer" ...
##  $ Work.Activities               : chr  "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry (Zone 4.2)." ...
##  $ Observations                  : chr  "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"A flowerbed was planted at some point on the slope leading into tree tags #16 & #15. We have removed some bul"| __truncated__ ...
##  $ Miscellaneous.and.Action.Items: chr  "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"We will likely reach tree tag #15, the northwestern boundary of the Matson site, within our next two crew outings.\"" ...
##  $ Native.Plant.Species          : chr  "Checker lily, Shooting star" "Checker lily, Shooting star" "Checker lily, Shooting star" "N/A" ...
##  $ Wildlife                      : chr  "Juncos" "Juncos" "Juncos" "N/A" ...
# need to change date

4 Data Wrangling

4.1 Format HAT Crew Dates

################################# 
# Format HAT Crew Dates

# separate values
crew_data_sep <- crew_data %>% separate(Date, into = c("Day", "Month"), sep = "-")

# convert month name to number
crew_data_sep$Month <- match(crew_data_sep$Month, month.abb)

# create new column for Date
crew_data_sep$Date <- NA

crew_data_sep$Date <- paste(crew_data_sep$Year, crew_data_sep$Month,crew_data_sep$Day,sep =  "-")
str(crew_data_sep)
## 'data.frame':    238 obs. of  20 variables:
##  $ Order_Calc_Split                   : int  135 136 137 138 139 144 145 148 149 150 ...
##  $ Year                               : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Day                                : chr  "07" "07" "08" "08" ...
##  $ Month                              : int  9 9 9 9 9 9 9 9 9 9 ...
##  $ Work_Site                          : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Location                           : chr  "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" ...
##  $ Area.Cleared..m2..orig             : num  1080 1080 1175 1175 750 ...
##  $ Area.Cleared..m2.                  : num  540 540 588 588 750 ...
##  $ Biomass.Removed..m3..orig          : num  3 3 3 3 2 3 3 3 3 4 ...
##  $ Biomass.Removed..m3.               : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions            : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig      : chr  "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" ...
##  $ Invasive_Species_Cleared_upper     : chr  "Daphne" "Scotch broom" "Daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared_lower_calc: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared           : chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive                 : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours                         : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer                     : chr  "Work" "Work" "Work" "Work" ...
##  $ Notes                              : chr  "" "" "" "" ...
##  $ Date                               : chr  "2022-9-07" "2022-9-07" "2022-9-08" "2022-9-08" ...
crew_data_sep$Date <- as.Date(crew_data_sep$Date)
str(crew_data_sep)
## 'data.frame':    238 obs. of  20 variables:
##  $ Order_Calc_Split                   : int  135 136 137 138 139 144 145 148 149 150 ...
##  $ Year                               : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Day                                : chr  "07" "07" "08" "08" ...
##  $ Month                              : int  9 9 9 9 9 9 9 9 9 9 ...
##  $ Work_Site                          : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Location                           : chr  "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1251 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" "1252 Garden Gate Dr, Brentwood Bay, BC V8M 2H6" ...
##  $ Area.Cleared..m2..orig             : num  1080 1080 1175 1175 750 ...
##  $ Area.Cleared..m2.                  : num  540 540 588 588 750 ...
##  $ Biomass.Removed..m3..orig          : num  3 3 3 3 2 3 3 3 3 4 ...
##  $ Biomass.Removed..m3.               : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions            : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig      : chr  "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" "Daphne, Scotch Broom" ...
##  $ Invasive_Species_Cleared_upper     : chr  "Daphne" "Scotch broom" "Daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared_lower_calc: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Invasive_Species_Cleared           : chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive                 : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours                         : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer                     : chr  "Work" "Work" "Work" "Work" ...
##  $ Notes                              : chr  "" "" "" "" ...
##  $ Date                               : Date, format: "2022-09-07" "2022-09-07" ...
################################# 
# Format Matson Fieldlog Dates

matson_fieldlog_2022_2025$Date <- as.Date(matson_fieldlog_2022_2025$Date)
str(matson_fieldlog_2022_2025)
## 'data.frame':    400 obs. of  21 variables:
##  $ Order_Calc_Split              : int  116 118 120 67 76 105 108 41 16 21 ...
##  $ Year                          : int  2022 2022 2022 2023 2023 2022 2022 2024 2024 2024 ...
##  $ Date                          : Date, format: "2022-07-06" "2022-06-22" ...
##  $ Date_orig                     : chr  "July 6 2022" "June 22 2022" "June 8 2022" "21-Jun-2023" ...
##  $ Site                          : chr  "Matson" "Matson" "Matson" "Matson" ...
##  $ Area_Cleared_m2_orig          : int  NA NA NA NA NA NA NA NA 245 220 ...
##  $ Area_Cleared_m2               : num  NA NA NA NA NA ...
##  $ Biomass_Removed_m3_orig       : num  1.5 1 1 1.5 5 3.5 3 3 2.5 2 ...
##  $ Biomass_Removed_m3            : num  0.25 0.17 0.2 0.19 0.71 1.17 1 1 0.31 0.29 ...
##  $ Data_Change_Assumptions       : chr  "estimate 1/6 of biomass, area, and work hours" "estimate 1/6 of biomass, area, and work hours" "estimate 1/5 of biomass, area, and work hours" "estimate 1/8 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig : chr  "Blackberry, Hairy cats-ear, Bachelors button, Broom, Thistle, Orchard grass" "Blackberry, Hairy cats-ear, Broom, Bachelors button, Poppies, Mustard" "Scotch thistle, Creeping buttercup, Blackberry, Bur chervil, Bachelors button" "Cleavers, Thistles, Orchard grass, Bindweed, Foxglove, Purple toadflax, Periwinkle, Scotch broom" ...
##  $ Invasive_Species_Cleared      : chr  "bachelors button" "bachelors button" "bachelors button" "bindweed" ...
##  $ Native_or_Invasive            : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours_orig               : num  17 15 12 13 19 9 12 9 13 12 ...
##  $ Crew_Hours                    : num  2.83 2.5 2.4 1.63 2.71 3 4 3 1.63 1.71 ...
##  $ Work_Volunteer                : chr  "Volunteer" "Volunteer" "Volunteer" "Volunteer" ...
##  $ Work.Activities               : chr  "Meadow maintenance removing blackberry, cats-ear, bachelors button, broom, thistle, orchard grass." "Maintenance (blackberry, cats-ear, broom, bachelors button, poppies, mustard); Weeding cages; Garbage sweep; Hauled water." "Removed scotch thistle; Weeding exclosure (buttercup, blackberry, grasses); Removed bur chervil and bachelors button." "Cleared cleavers, thistles, orchard grass, bindweed; West exclosure maintenance; Salvaged osoberry seedlings." ...
##  $ Observations                  : chr  "25 healthy plants of rattlesnake plantain orchid located in lower west woodland. Tentative alligator lizard nea"| __truncated__ "Large thriving patch of wooly eriophyllum located in apartment gardens on east side - presumably cultivated." "Small flowered alumroot (salvaged) in bloom in several places." "\"Numerous swallowtail butterflies; ocean spray shrubs in full bloom.\"" ...
##  $ Miscellaneous.and.Action.Items: chr  "Matt Fairbarns, Sara Lax and Max Mitchell on site in afternoon for site tour to identify grasses and advise on "| __truncated__ "Garbage sweep of whole site - minimal new garbage. Abandoned armchair hauled to end of Garrett. Cage around pac"| __truncated__ "Clothing items, etc still have not been removed from former campsite near tree #321." "\"HAT youth crew and others worked on site during the afternoon of 19 June. Numerous small scotch broom seedlin"| __truncated__ ...
##  $ Native.Plant.Species          : chr  "Rattlesnake plantain orchid, Ocean spray, Osoberry, Roses, Dogwood, Camas, Spring Gold" "Fir, Willow, Red-flowering currant, Arbutus, Wooly eriophyllum, Pacific yew" "Small flowered alumroot" "Osoberry, Ocean spray" ...
##  $ Wildlife                      : chr  "Alligator lizard, Garter snake, Deer" "N/A" "N/A" "Swallowtail butterflies" ...
matson_fieldlog_2024$Date <- as.Date(matson_fieldlog_2024$Date)
str(matson_fieldlog_2024)
## 'data.frame':    121 obs. of  24 variables:
##  $ Order_Calc_Split              : int  42 42 42 41 41 41 37 37 36 36 ...
##  $ Year                          : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ Date                          : Date, format: "2024-01-03" "2024-01-03" ...
##  $ Date_orig                     : chr  "Jan 3 2024" "Jan 3 2024" "Jan 3 2024" "Jan 10 2024" ...
##  $ Site                          : chr  "Matson" "Matson" "Matson" "Matson" ...
##  $ Area_Cleared_m2_orig          : int  NA NA NA NA NA NA NA NA 28 28 ...
##  $ Area_Cleared_m2_calc          : num  NA NA NA NA NA NA NA NA 14 14 ...
##  $ Area_Cleared_m2               : num  NA NA NA NA NA NA NA NA 14 14 ...
##  $ Biomass_Removed_m3_orig       : num  4 4 4 3 3 3 4 4 7 7 ...
##  $ Biomass_Removed_m3_calc       : num  1.33 1.33 1.33 1 1 1 2 2 3.5 3.5 ...
##  $ Biomass_Removed_m3            : num  1.33 1.33 1.33 1 1 1 2 2 3.5 3.5 ...
##  $ Data_Change_Assumptions       : chr  "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" "estimate 1/3 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared_orig : chr  "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Poison hemlock" "English ivy, Blackberry, Non-native bulbs" ...
##  $ Invasive_Species_Cleared      : chr  "blackberry" "English ivy" "poison hemlock" "blackberry" ...
##  $ Native_or_Invasive            : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours_orig               : num  14 14 14 9 9 9 6 6 12 12 ...
##  $ Crew_Hours_calc               : num  4.67 4.67 4.67 3 3 3 3 3 6 6 ...
##  $ Crew_Hours                    : num  4.67 4.67 4.67 3 3 3 3 3 6 6 ...
##  $ Work_Volunteer                : chr  "Volunteer" "Volunteer" "Volunteer" "Volunteer" ...
##  $ Work.Activities               : chr  "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry from upper west side; Removed cages on east side." "Cleared ivy and blackberry (Zone 4.2)." ...
##  $ Observations                  : chr  "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"The Matson woodlands provide habitat for large numbers (hundreds) of small birds (Juncos and others) at this "| __truncated__ "\"A flowerbed was planted at some point on the slope leading into tree tags #16 & #15. We have removed some bul"| __truncated__ ...
##  $ Miscellaneous.and.Action.Items: chr  "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"A number of small poison hemlock plants are emerging on the west side of strata property.\"" "\"We will likely reach tree tag #15, the northwestern boundary of the Matson site, within our next two crew outings.\"" ...
##  $ Native.Plant.Species          : chr  "Checker lily, Shooting star" "Checker lily, Shooting star" "Checker lily, Shooting star" "N/A" ...
##  $ Wildlife                      : chr  "Juncos" "Juncos" "Juncos" "N/A" ...

4.1.1 # Columns - Change Names and Select

colnames(crew_data_sep)
##  [1] "Order_Calc_Split"                    "Year"                               
##  [3] "Day"                                 "Month"                              
##  [5] "Work_Site"                           "Location"                           
##  [7] "Area.Cleared..m2..orig"              "Area.Cleared..m2."                  
##  [9] "Biomass.Removed..m3..orig"           "Biomass.Removed..m3."               
## [11] "Data_Change_Assumptions"             "Invasive_Species_Cleared_orig"      
## [13] "Invasive_Species_Cleared_upper"      "Invasive_Species_Cleared_lower_calc"
## [15] "Invasive_Species_Cleared"            "Native_or_Invasive"                 
## [17] "Crew_Hours"                          "Work_Volunteer"                     
## [19] "Notes"                               "Date"
# Rename columns
# names(crew_data_sep)[names(crew_data_sep) == "Work.Site"] <- "Work_Site"
names(crew_data_sep)[names(crew_data_sep) == "Biomass.Removed..m3."] <- "Biomass_Removed_m3"
names(crew_data_sep)[names(crew_data_sep) == "Area.Cleared..m2."] <- "Area_Cleared_m2"
# names(crew_data_sep)[names(crew_data_sep) == "Invasive.Species.Cleared"] <- "Invasive_Species_Cleared"
# names(crew_data_sep)[names(crew_data_sep) == "Crew.Hours"] <- "Crew_Hours"

################################# 
# Columns - Subset Selected Columns
# Get column names
colnames(crew_data_sep)
##  [1] "Order_Calc_Split"                    "Year"                               
##  [3] "Day"                                 "Month"                              
##  [5] "Work_Site"                           "Location"                           
##  [7] "Area.Cleared..m2..orig"              "Area_Cleared_m2"                    
##  [9] "Biomass.Removed..m3..orig"           "Biomass_Removed_m3"                 
## [11] "Data_Change_Assumptions"             "Invasive_Species_Cleared_orig"      
## [13] "Invasive_Species_Cleared_upper"      "Invasive_Species_Cleared_lower_calc"
## [15] "Invasive_Species_Cleared"            "Native_or_Invasive"                 
## [17] "Crew_Hours"                          "Work_Volunteer"                     
## [19] "Notes"                               "Date"
# Remove unneeded columns
crew_data_sep_sub <- subset(crew_data_sep, select = -c(1,3,4,6,7,9,12,13,14,19))
colnames(crew_data_sep_sub)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
str(crew_data_sep_sub)
## 'data.frame':    238 obs. of  10 variables:
##  $ Year                    : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Work_Site               : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Area_Cleared_m2         : num  540 540 588 588 750 ...
##  $ Biomass_Removed_m3      : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive      : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours              : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer          : chr  "Work" "Work" "Work" "Work" ...
##  $ Date                    : Date, format: "2022-09-07" "2022-09-07" ...
# Matson field log remove unneeded columns
colnames(matson_fieldlog_2022_2025)
##  [1] "Order_Calc_Split"               "Year"                          
##  [3] "Date"                           "Date_orig"                     
##  [5] "Site"                           "Area_Cleared_m2_orig"          
##  [7] "Area_Cleared_m2"                "Biomass_Removed_m3_orig"       
##  [9] "Biomass_Removed_m3"             "Data_Change_Assumptions"       
## [11] "Invasive_Species_Cleared_orig"  "Invasive_Species_Cleared"      
## [13] "Native_or_Invasive"             "Crew_Hours_orig"               
## [15] "Crew_Hours"                     "Work_Volunteer"                
## [17] "Work.Activities"                "Observations"                  
## [19] "Miscellaneous.and.Action.Items" "Native.Plant.Species"          
## [21] "Wildlife"
matson_fieldlog_2022_2025_sub <- subset(matson_fieldlog_2022_2025, select = -c(1,4,6,8,10,11,14,17:21))

colnames(matson_fieldlog_2024)
##  [1] "Order_Calc_Split"               "Year"                          
##  [3] "Date"                           "Date_orig"                     
##  [5] "Site"                           "Area_Cleared_m2_orig"          
##  [7] "Area_Cleared_m2_calc"           "Area_Cleared_m2"               
##  [9] "Biomass_Removed_m3_orig"        "Biomass_Removed_m3_calc"       
## [11] "Biomass_Removed_m3"             "Data_Change_Assumptions"       
## [13] "Invasive_Species_Cleared_orig"  "Invasive_Species_Cleared"      
## [15] "Native_or_Invasive"             "Crew_Hours_orig"               
## [17] "Crew_Hours_calc"                "Crew_Hours"                    
## [19] "Work_Volunteer"                 "Work.Activities"               
## [21] "Observations"                   "Miscellaneous.and.Action.Items"
## [23] "Native.Plant.Species"           "Wildlife"
matson_fieldlog_2024_sub <- subset(matson_fieldlog_2024, select = -c(1,4,6,7,9,10,12,13,16,17,20:24))

4.1.2 Change Format Numeric

# change to number format
crew_data_sep_sub$Area_Cleared_m2 <- as.numeric(as.character(crew_data_sep_sub$Area_Cleared_m2))
crew_data_sep_sub$Biomass_Removed_m3 <- as.numeric(as.character(crew_data_sep_sub$Biomass_Removed_m3))
# Warning: NAs introduced by coercion May 6 2025 was a blank cell with no value
str(crew_data_sep_sub)
## 'data.frame':    238 obs. of  10 variables:
##  $ Year                    : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Work_Site               : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Area_Cleared_m2         : num  540 540 588 588 750 ...
##  $ Biomass_Removed_m3      : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive      : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours              : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer          : chr  "Work" "Work" "Work" "Work" ...
##  $ Date                    : Date, format: "2022-09-07" "2022-09-07" ...

4.1.3 Save Crew Data subset

crew_data_sep_sub
##     Year                Work_Site Area_Cleared_m2 Biomass_Removed_m3
## 1   2022           Oak Haven Park           540.0               1.50
## 2   2022           Oak Haven Park           540.0               1.50
## 3   2022           Oak Haven Park           587.5               1.50
## 4   2022           Oak Haven Park           587.5               1.50
## 5   2022           Oak Haven Park           750.0               2.00
## 6   2022           Oak Haven Park           600.0               1.50
## 7   2022           Oak Haven Park           600.0               1.50
## 8   2022           Oak Haven Park           500.0               1.50
## 9   2022           Oak Haven Park           500.0               1.50
## 10  2022           Oak Haven Park           600.0               2.00
## 11  2022           Oak Haven Park           600.0               2.00
## 12  2022           Oak Haven Park          1200.0               2.50
## 13  2022           Oak Haven Park          1200.0               2.50
## 14  2022           Oak Haven Park           450.0               1.50
## 15  2022           Oak Haven Park           450.0               1.50
## 16  2022           Oak Haven Park           400.0               1.50
## 17  2022           Oak Haven Park           400.0               1.50
## 18  2022           Oak Haven Park           266.7               1.00
## 19  2022           Oak Haven Park           266.7               1.00
## 20  2022           Oak Haven Park           266.7               1.00
## 21  2022           Oak Haven Park           266.7               1.00
## 22  2022           Oak Haven Park           266.7               1.00
## 23  2022           Oak Haven Park           266.7               1.00
## 24  2022 Matson Conservation Area            25.0               0.50
## 25  2022 Matson Conservation Area            30.0               1.00
## 26  2022 Matson Conservation Area            30.0               1.00
## 27  2022 Matson Conservation Area             7.5               0.50
## 28  2022 Matson Conservation Area             7.5               0.50
## 29  2022 Matson Conservation Area            10.0               0.50
## 30  2022 Matson Conservation Area            10.0               0.50
## 31  2022 Matson Conservation Area             7.5               0.30
## 32  2022 Matson Conservation Area             7.5               0.30
## 33  2022 Matson Conservation Area            20.0               1.00
## 34  2022           Oak Haven Park           100.0               3.00
## 35  2022           Oak Haven Park           100.0               3.00
## 36  2022           Oak Haven Park           100.0               1.00
## 37  2022           Oak Haven Park           250.0               4.00
## 38  2022           Oak Haven Park           250.0               4.00
## 39  2022           Oak Haven Park           100.0               2.00
## 40  2022           Oak Haven Park           400.0               5.00
## 41  2022 Matson Conservation Area            60.0               1.00
## 42  2022 Matson Conservation Area            60.0               1.00
## 43  2022 Matson Conservation Area            60.0               1.00
## 44  2022           Oak Haven Park           100.0               3.00
## 45  2022           Oak Haven Park           250.0               4.00
## 46  2022           Oak Haven Park           250.0               4.00
## 47  2022           Oak Haven Park           250.0               4.00
## 48  2022           Oak Haven Park           250.0               3.00
## 49  2022           Oak Haven Park           250.0               3.00
## 50  2022           Oak Haven Park           250.0               3.00
## 51  2022           Oak Haven Park           400.0               4.00
## 52  2022           Oak Haven Park           400.0               3.00
## 53  2022           Oak Haven Park           300.0               4.00
## 54  2022           Oak Haven Park           250.0               3.00
## 55  2022           Oak Haven Park           500.0               3.00
## 56  2022           Oak Haven Park           250.0               4.00
## 57  2022           Oak Haven Park           250.0               3.00
## 58  2023 Matson Conservation Area            10.0               0.60
## 59  2023 Matson Conservation Area            10.0               0.60
## 60  2023 Matson Conservation Area            15.0               0.70
## 61  2023 Matson Conservation Area            15.0               0.70
## 62  2023 Matson Conservation Area            20.0               0.60
## 63  2023 Matson Conservation Area            20.0               0.60
## 64  2023 Matson Conservation Area            20.0               0.60
## 65  2023 Matson Conservation Area            13.3               0.60
## 66  2023 Matson Conservation Area            13.3               0.60
## 67  2023 Matson Conservation Area            13.3               0.60
## 68  2023 Matson Conservation Area            50.0               7.50
## 69  2023 Matson Conservation Area            50.0               7.50
## 70  2023           Oak Haven Park            25.0               0.50
## 71  2023           Oak Haven Park            25.0               0.50
## 72  2023 Matson Conservation Area            20.0               0.40
## 73  2023 Matson Conservation Area            20.0               0.40
## 74  2023 Matson Conservation Area            20.0               0.40
## 75  2023 Matson Conservation Area            20.0               0.40
## 76  2023 Matson Conservation Area            20.0               0.40
## 77  2023           Oak Haven Park            40.0               0.20
## 78  2023           Havenwood Park           100.0               7.50
## 79  2023           Havenwood Park           100.0               7.50
## 80  2023                    Yates          1000.0               2.50
## 81  2023                    Yates         11000.0               1.00
## 82  2023                    Yates         11000.0               1.00
## 83  2023                    Yates         11000.0               0.90
## 84  2023                    Yates         11000.0               0.90
## 85  2023                    Yates           900.0               1.80
## 86  2023                    Yates           200.0               0.80
## 87  2023           Oak Haven Park            50.0               1.00
## 88  2023           Oak Haven Park            50.0               1.00
## 89  2023               Camas Hill           400.0               8.00
## 90  2023               Camas Hill           400.0              10.00
## 91  2023               Camas Hill           200.0               2.00
## 92  2023               Camas Hill           400.0              10.00
## 93  2023 Matson Conservation Area            37.5               1.30
## 94  2023 Matson Conservation Area            37.5               1.30
## 95  2023                     Funk          1513.0               5.00
## 96  2023               Camas Hill           175.0               6.00
## 97  2023               Camas Hill           175.0               5.00
## 98  2023           Oak Haven Park           100.0               2.00
## 99  2023 Matson Conservation Area            45.5               0.40
## 100 2023 Matson Conservation Area            45.5               0.40
## 101 2023 Matson Conservation Area            45.5               0.40
## 102 2023 Matson Conservation Area            37.5               0.50
## 103 2023 Matson Conservation Area            37.5               0.50
## 104 2023 Matson Conservation Area            37.5               0.50
## 105 2023 Matson Conservation Area            37.5               0.50
## 106 2023 Matson Conservation Area            25.0               0.40
## 107 2023 Matson Conservation Area            25.0               0.40
## 108 2023 Matson Conservation Area            25.0               0.30
## 109 2023 Matson Conservation Area            25.0               0.30
## 110 2023 Matson Conservation Area            45.0               0.80
## 111 2023 Matson Conservation Area            15.0               0.30
## 112 2023           Oak Haven Park            40.0               2.00
## 113 2023           Oak Haven Park            13.3               0.70
## 114 2023           Oak Haven Park            13.3               0.70
## 115 2023           Oak Haven Park            13.3               0.70
## 116 2023           Oak Haven Park            30.0               1.30
## 117 2023           Oak Haven Park            30.0               2.50
## 118 2023 Matson Conservation Area           150.0               2.20
## 119 2023 Matson Conservation Area           150.0               1.80
## 120 2023           Oak Haven Park           350.0               3.00
## 121 2023           Oak Haven Park           250.0               2.00
## 122 2023           Oak Haven Park           250.0               2.00
## 123 2023           Oak Haven Park           300.0               2.50
## 124 2023           Oak Haven Park           300.0               2.50
## 125 2023           Oak Haven Park           300.0               2.50
## 126 2023           Oak Haven Park           300.0               2.50
## 127 2023 Matson Conservation Area           200.0               2.80
## 128 2023               Camas Hill           650.0              10.00
## 129 2023               Camas Hill           400.0               8.00
## 130 2023           Oak Haven Park           400.0               7.00
## 131 2023 Matson Conservation Area            70.0               2.80
## 132 2023 Matson Conservation Area            60.0               1.20
## 133 2023                    Yates             0.0               1.00
## 134 2023                    Yates           492.0               0.50
## 135 2023                    Yates           492.0               0.50
## 136 2023 Matson Conservation Area             0.0               1.20
## 137 2023 Matson Conservation Area             0.0               0.80
## 138 2024                    Yates          1015.0               8.00
## 139 2024                    Yates          1451.0               6.00
## 140 2024                    Yates          2559.0               3.00
## 141 2024                    Yates          2714.0               3.50
## 142 2024           Oak Haven Park           100.3               0.20
## 143 2024           Oak Haven Park           142.7               0.20
## 144 2024                    Yates          5223.0               3.00
## 145 2024                Bear Hill           305.0              18.00
## 146 2024           Oak Haven Park            61.6               0.30
## 147 2024           Oak Haven Park           134.0               0.20
## 148 2024           Oak Haven Park            47.0               0.10
## 149 2024               Camas Hill           127.2               0.30
## 150 2024               Camas Hill           195.0               2.50
## 151 2024               Camas Hill           182.0               3.00
## 152 2024               Camas Hill           338.0               3.00
## 153 2024                Bear Hill           424.0              15.00
## 154 2024 Matson Conservation Area           110.8               0.30
## 155 2024 Matson Conservation Area           110.8               0.30
## 156 2024 Matson Conservation Area           110.8               0.30
## 157 2024 Matson Conservation Area           110.8               0.30
## 158 2024                    Yates           466.0               2.00
## 159 2024                    Yates          2193.0               1.50
## 160 2024 Matson Conservation Area           103.7               0.80
## 161 2024 Matson Conservation Area           103.7               0.80
## 162 2024                     Funk          3549.0               4.00
## 163 2024 Matson Conservation Area            33.3               1.30
## 164 2024 Matson Conservation Area            33.3               1.30
## 165 2024           Havenwood Park           342.0               2.50
## 166 2024           Purple Sanicle           110.0               0.20
## 167 2024           Purple Sanicle           138.0               0.80
## 168 2024           Purple Sanicle           158.0               1.00
## 169 2024           Purple Sanicle           113.0               1.80
## 170 2024 Matson Conservation Area           213.0               0.50
## 171 2024 Matson Conservation Area            41.9               0.40
## 172 2024 Matson Conservation Area            41.9               0.40
## 173 2024 Matson Conservation Area            54.5               0.50
## 174 2024 Matson Conservation Area           490.0               3.00
## 175 2024           Purple Sanicle            45.0               0.40
## 176 2024           Purple Sanicle            27.0               0.30
## 177 2024           Purple Sanicle            26.5               0.60
## 178 2024           Purple Sanicle            39.0               0.60
## 179 2024           Oak Haven Park            27.5               0.40
## 180 2024           Oak Haven Park            27.5               0.40
## 181 2024           Oak Haven Park           108.0               1.50
## 182 2024           Oak Haven Park           211.1               1.00
## 183 2024           Oak Haven Park            21.3               0.20
## 184 2024 Matson Conservation Area            81.8               0.20
## 185 2024 Matson Conservation Area             0.0               0.00
## 186 2024           Oak Haven Park           160.0               2.00
## 187 2025           Oak Haven Park            61.6               0.10
## 188 2025           Oak Haven Park            22.5               0.10
## 189 2025           Oak Haven Park            20.5               0.00
## 190 2025           Oak Haven Park            17.1               0.10
## 191 2025           Oak Haven Park            44.0               0.10
## 192 2025                    Yates          1799.0               2.00
## 193 2025                    Yates           666.0               2.20
## 194 2025                    Yates           552.0               3.10
## 195 2025                    Yates           511.0               4.70
## 196 2025                    Yates          1370.0               5.00
## 197 2025                    Yates          1587.0               2.00
## 198 2025           Oak Haven Park            25.0               0.60
## 199 2025           Oak Haven Park            92.8               1.40
## 200 2025           Oak Haven Park            30.5               0.15
## 201 2025           Oak Haven Park           509.9               0.15
## 202 2025               Camas Hill          1237.0               1.50
## 203 2025               Camas Hill          1460.0               2.50
## 204 2025               Camas Hill           814.0               1.20
## 205 2025               Camas Hill           308.4               2.00
## 206 2025               Camas Hill           447.5               3.00
## 207 2025               Camas Hill           719.3               4.50
## 208 2025           Oak Haven Park            15.4               0.50
## 209 2024 Matson Conservation Area           567.3               0.30
## 210 2023 Matson Conservation Area            15.0               0.30
## 211 2024 Matson Conservation Area           567.3               0.30
## 212 2024 Matson Conservation Area           567.3               0.30
## 213 2023 Matson Conservation Area            15.0               0.30
## 214 2025 Matson Conservation Area            64.0               0.10
## 215 2025 Matson Conservation Area            64.0               0.10
## 216 2025                     Funk          5344.7               3.00
## 217 2025           Oak Haven Park           195.9               1.00
## 218 2025                    Yates           631.7               0.30
## 219 2025                    Yates           631.7               0.30
## 220 2025                    Yates           631.7               0.30
## 221 2025               Camas Hill             0.0               0.00
## 222 2025 Matson Conservation Area           157.7               0.10
## 223 2025 Matson Conservation Area           157.7               0.10
## 224 2025 Matson Conservation Area           157.7               0.10
## 225 2025            Calypso Woods           594.8               3.00
## 226 2025                    Yates          3757.0               0.70
## 227 2025 Matson Conservation Area            45.4               1.00
## 228 2025 Matson Conservation Area            45.4               1.00
## 229 2025           Purple Sanicle           545.0               0.80
## 230 2025           Purple Sanicle           315.0               1.30
## 231 2025 Matson Conservation Area           160.0               2.70
## 232 2025 Matson Conservation Area           224.0               0.20
## 233 2025 Matson Conservation Area           224.0               0.20
## 234 2023                    Yates            69.0               0.50
## 235 2023                    Yates            69.0               0.50
## 236 2025           Purple Sanicle           134.0               1.00
## 237 2025           Purple Sanicle            44.4               0.90
## 238 2025 Matson Conservation Area             0.0               0.00
##                           Data_Change_Assumptions Invasive_Species_Cleared
## 1   estimate 1/2 of biomass, area, and work hours                   daphne
## 2   estimate 1/2 of biomass, area, and work hours             Scotch broom
## 3   estimate 1/2 of biomass, area, and work hours                   daphne
## 4   estimate 1/2 of biomass, area, and work hours             Scotch broom
## 5                                                                   daphne
## 6   estimate 1/2 of biomass, area, and work hours                   daphne
## 7   estimate 1/2 of biomass, area, and work hours                    holly
## 8   estimate 1/2 of biomass, area, and work hours                   daphne
## 9   estimate 1/2 of biomass, area, and work hours             Scotch broom
## 10  estimate 1/2 of biomass, area, and work hours                   daphne
## 11  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 12  estimate 1/2 of biomass, area, and work hours                   daphne
## 13  estimate 1/2 of biomass, area, and work hours              English ivy
## 14  estimate 1/2 of biomass, area, and work hours                   daphne
## 15  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 16  estimate 1/2 of biomass, area, and work hours                   daphne
## 17  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 18  estimate 1/3 of biomass, area, and work hours                   daphne
## 19  estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 20  estimate 1/3 of biomass, area, and work hours             Scotch broom
## 21  estimate 1/3 of biomass, area, and work hours                   daphne
## 22  estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 23  estimate 1/3 of biomass, area, and work hours             Scotch broom
## 24                                                        invasive grasses
## 25                                                        invasive grasses
## 26                                                        invasive grasses
## 27  estimate 1/2 of biomass, area, and work hours              English ivy
## 28  estimate 1/2 of biomass, area, and work hours         invasive grasses
## 29  estimate 1/2 of biomass, area, and work hours              English ivy
## 30  estimate 1/2 of biomass, area, and work hours         invasive grasses
## 31  estimate 1/2 of biomass, area, and work hours              English ivy
## 32  estimate 1/2 of biomass, area, and work hours         invasive grasses
## 33                                                             English ivy
## 34                                                                  daphne
## 35                                                                  daphne
## 36                                                                  daphne
## 37  estimate 1/2 of biomass, area, and work hours                   daphne
## 38  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 39                                                                  daphne
## 40                                                                  daphne
## 41                                                             English ivy
## 42                                                             English ivy
## 43                                                             English ivy
## 44                                                                  daphne
## 45                                                                  daphne
## 46                                                                  daphne
## 47                                                                  daphne
## 48                                                                  daphne
## 49                                                                  daphne
## 50                                                                  daphne
## 51                                                                  daphne
## 52                                                                  daphne
## 53                                                                  daphne
## 54                                                                  daphne
## 55                                                                  daphne
## 56                                                                  daphne
## 57                                                                  daphne
## 58  estimate 1/2 of biomass, area, and work hours              English ivy
## 59  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 60  estimate 1/2 of biomass, area, and work hours              English ivy
## 61  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 62  estimate 1/3 of biomass, area, and work hours                   privet
## 63  estimate 1/3 of biomass, area, and work hours              English ivy
## 64  estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 65  estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 66  estimate 1/3 of biomass, area, and work hours              English ivy
## 67  estimate 1/3 of biomass, area, and work hours            orchard grass
## 68  estimate 1/2 of biomass, area, and work hours              English ivy
## 69  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 70  estimate 1/2 of biomass, area, and work hours                   daphne
## 71  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 72  estimate 1/5 of biomass, area, and work hours             Scotch broom
## 73  estimate 1/5 of biomass, area, and work hours                    sedge
## 74  estimate 1/5 of biomass, area, and work hours              English ivy
## 75  estimate 1/5 of biomass, area, and work hours                   garlic
## 76  estimate 1/5 of biomass, area, and work hours     Himalayan blackberry
## 77                                                          shiny geranium
## 78  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 79  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 80                                                            Scotch broom
## 81  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 82  estimate 1/2 of biomass, area, and work hours                   daphne
## 83  estimate 1/2 of biomass, area, and work hours                   daphne
## 84  estimate 1/2 of biomass, area, and work hours             Scotch broom
## 85                                                            Scotch broom
## 86                                                            Scotch broom
## 87  estimate 1/2 of biomass, area, and work hours           shiny geranium
## 88  estimate 1/2 of biomass, area, and work hours                   daphne
## 89                                                            Scotch broom
## 90                                                            Scotch broom
## 91                                                            Scotch broom
## 92                                                            Scotch broom
## 93  estimate 1/2 of biomass, area, and work hours              English ivy
## 94  estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 95                                                            Scotch broom
## 96                                                            Scotch broom
## 97                                                            Scotch broom
## 98                                                          shiny geranium
## 99  estimate 1/3 of biomass, area, and work hours              English ivy
## 100 estimate 1/3 of biomass, area, and work hours             Scotch broom
## 101 estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 102 estimate 1/4 of biomass, area, and work hours              English ivy
## 103 estimate 1/4 of biomass, area, and work hours     Himalayan blackberry
## 104 estimate 1/4 of biomass, area, and work hours                    sedge
## 105 estimate 1/4 of biomass, area, and work hours                 cleavers
## 106 estimate 1/2 of biomass, area, and work hours              English ivy
## 107 estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 108 estimate 1/2 of biomass, area, and work hours                   daphne
## 109 estimate 1/2 of biomass, area, and work hours              English ivy
## 110                                                            English ivy
## 111 estimate 1/3 of biomass, area, and work hours         English hawthorn
## 112                                                                 daphne
## 113 estimate 1/3 of biomass, area, and work hours             Scotch broom
## 114 estimate 1/3 of biomass, area, and work hours                   daphne
## 115 estimate 1/3 of biomass, area, and work hours              English ivy
## 116                                                                 daphne
## 117                                                                 daphne
## 118                                                            English ivy
## 119                                                            English ivy
## 120                                                                 daphne
## 121 estimate 1/2 of biomass, area, and work hours              English ivy
## 122 estimate 1/2 of biomass, area, and work hours                   daphne
## 123 estimate 1/2 of biomass, area, and work hours                   daphne
## 124 estimate 1/2 of biomass, area, and work hours              English ivy
## 125 estimate 1/2 of biomass, area, and work hours              English ivy
## 126 estimate 1/2 of biomass, area, and work hours                   daphne
## 127                                                            English ivy
## 128                                                           Scotch broom
## 129                                                           Scotch broom
## 130                                                                 daphne
## 131                                                            English ivy
## 132                                                            English ivy
## 133                                                           Scotch broom
## 134 estimate 1/2 of biomass, area, and work hours                    holly
## 135 estimate 1/2 of biomass, area, and work hours             Scotch broom
## 136                                                            English ivy
## 137                                                            English ivy
## 138                                                           Scotch broom
## 139                                                           Scotch broom
## 140                                                           Scotch broom
## 141                                                           Scotch broom
## 142                                                         shiny geranium
## 143                                                         shiny geranium
## 144                                                           Scotch broom
## 145                                            ??             misc species
## 146                                                         shiny geranium
## 147                                                         shiny geranium
## 148                                                         shiny geranium
## 149                                                           Scotch broom
## 150                                                           Scotch broom
## 151                                                           Scotch broom
## 152                                                           Scotch broom
## 153                                            ??             misc species
## 154 estimate 1/4 of biomass, area, and work hours                  thistle
## 155 estimate 1/4 of biomass, area, and work hours     Himalayan blackberry
## 156 estimate 1/4 of biomass, area, and work hours                    sedge
## 157 estimate 1/4 of biomass, area, and work hours              English ivy
## 158                                                           Scotch broom
## 159                                                           Scotch broom
## 160 estimate 1/2 of biomass, area, and work hours              English ivy
## 161 estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 162                                                           Scotch broom
## 163 estimate 1/2 of biomass, area, and work hours              English ivy
## 164 estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 165                                                   Himalayan blackberry
## 166                                                           Scotch broom
## 167                                                           Scotch broom
## 168                                                           Scotch broom
## 169                                                           Scotch broom
## 170                                                          orchard grass
## 171 estimate 1/2 of biomass, area, and work hours            orchard grass
## 172 estimate 1/2 of biomass, area, and work hours                   thatch
## 173                                                                 thatch
## 174                                                          orchard grass
## 175                                                           Scotch broom
## 176                                                           Scotch broom
## 177                                                           Scotch broom
## 178                                                           Scotch broom
## 179 estimate 1/2 of biomass, area, and work hours             Scotch broom
## 180 estimate 1/2 of biomass, area, and work hours       sweet vernal grass
## 181                                                           Scotch broom
## 182                                                           Scotch broom
## 183                                                           Scotch broom
## 184                                                          orchard grass
## 185                                                                   <NA>
## 186                                                           Scotch broom
## 187                                                         shiny geranium
## 188                                                         shiny geranium
## 189                                                         shiny geranium
## 190                                                         shiny geranium
## 191                                                         shiny geranium
## 192                                                           Scotch broom
## 193                                                           Scotch broom
## 194                                                           Scotch broom
## 195                                                           Scotch broom
## 196                                                           Scotch broom
## 197                                                           Scotch broom
## 198                                                         shiny geranium
## 199                                                         shiny geranium
## 200                                                         shiny geranium
## 201                                                         shiny geranium
## 202                                                           Scotch broom
## 203                                                           Scotch broom
## 204                                                           Scotch broom
## 205                                                           Scotch broom
## 206                                                           Scotch broom
## 207                                                           Scotch broom
## 208                                                         shiny geranium
## 209 estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 210 estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 211 estimate 1/3 of biomass, area, and work hours             Scotch broom
## 212 estimate 1/3 of biomass, area, and work hours              English ivy
## 213 estimate 1/3 of biomass, area, and work hours              English ivy
## 214 estimate 1/2 of biomass, area, and work hours             Scotch broom
## 215 estimate 1/2 of biomass, area, and work hours     Himalayan blackberry
## 216                                                           Scotch broom
## 217                                                           Scotch broom
## 218 estimate 1/3 of biomass, area, and work hours                   daphne
## 219 estimate 1/3 of biomass, area, and work hours             Scotch broom
## 220 estimate 1/3 of biomass, area, and work hours                    tansy
## 221                                                                   <NA>
## 222 estimate 1/3 of biomass, area, and work hours              English ivy
## 223 estimate 1/3 of biomass, area, and work hours     Himalayan blackberry
## 224 estimate 1/3 of biomass, area, and work hours               periwinkle
## 225                                                           Scotch broom
## 226                                                           Scotch broom
## 227 estimate 1/2 of biomass, area, and work hours              English ivy
## 228 estimate 1/2 of biomass, area, and work hours          purple toadflax
## 229                                                           Scotch broom
## 230                                                           Scotch broom
## 231                                                            English ivy
## 232 estimate 1/2 of biomass, area, and work hours                buttercup
## 233 estimate 1/2 of biomass, area, and work hours        reed canary grass
## 234 estimate 1/2 of biomass, area, and work hours                   daphne
## 235 estimate 1/2 of biomass, area, and work hours             Scotch broom
## 236                                                           Scotch broom
## 237                                                           Scotch broom
## 238                                                                   <NA>
##     Native_or_Invasive Crew_Hours Work_Volunteer       Date
## 1             Invasive       22.5           Work 2022-09-07
## 2             Invasive       22.5           Work 2022-09-07
## 3             Invasive       30.0           Work 2022-09-08
## 4             Invasive       30.0           Work 2022-09-08
## 5             Invasive       22.5           Work 2022-09-09
## 6             Invasive       22.5           Work 2022-09-12
## 7             Invasive       22.5           Work 2022-09-12
## 8             Invasive       22.5           Work 2022-09-13
## 9             Invasive       22.5           Work 2022-09-13
## 10            Invasive       22.5           Work 2022-09-14
## 11            Invasive       22.5           Work 2022-09-14
## 12            Invasive       30.0           Work 2022-09-15
## 13            Invasive       30.0           Work 2022-09-15
## 14            Invasive       22.5           Work 2022-09-16
## 15            Invasive       22.5           Work 2022-09-16
## 16            Invasive       22.5           Work 2022-09-19
## 17            Invasive       22.5           Work 2022-09-19
## 18            Invasive       30.0           Work 2022-09-20
## 19            Invasive       30.0           Work 2022-09-20
## 20            Invasive       30.0           Work 2022-09-20
## 21            Invasive       22.5           Work 2022-09-21
## 22            Invasive       22.5           Work 2022-09-21
## 23            Invasive       22.5           Work 2022-09-21
## 24          MixedGrass       22.5           Work 2022-09-23
## 25          MixedGrass       22.5           Work 2022-09-26
## 26          MixedGrass       22.5           Work 2022-09-27
## 27            Invasive       15.0           Work 2022-09-28
## 28          MixedGrass       15.0           Work 2022-09-28
## 29            Invasive       22.5           Work 2022-09-29
## 30          MixedGrass       22.5           Work 2022-09-29
## 31            Invasive       30.0           Work 2022-09-30
## 32          MixedGrass       30.0           Work 2022-09-30
## 33            Invasive       15.0           Work 2022-10-03
## 34            Invasive       15.0           Work 2022-10-04
## 35            Invasive       15.0           Work 2022-10-05
## 36            Invasive       15.0           Work 2022-10-06
## 37            Invasive       22.5           Work 2022-10-11
## 38            Invasive       22.5           Work 2022-10-11
## 39            Invasive       15.0           Work 2022-10-12
## 40            Invasive       15.0           Work 2022-10-14
## 41            Invasive       15.0           Work 2022-10-17
## 42            Invasive       15.0           Work 2022-10-19
## 43            Invasive       22.5           Work 2022-10-21
## 44            Invasive       22.5           Work 2022-10-24
## 45            Invasive       22.5           Work 2022-10-25
## 46            Invasive       15.0           Work 2022-10-26
## 47            Invasive       22.5           Work 2022-10-27
## 48            Invasive       15.0           Work 2022-10-31
## 49            Invasive       22.5           Work 2022-11-01
## 50            Invasive       15.0           Work 2022-11-02
## 51            Invasive       22.5           Work 2022-11-03
## 52            Invasive       22.5           Work 2022-11-07
## 53            Invasive       15.0           Work 2022-11-08
## 54            Invasive       15.0           Work 2022-11-09
## 55            Invasive       22.5           Work 2022-11-14
## 56            Invasive       15.0           Work 2022-11-15
## 57            Invasive       15.0           Work 2022-11-16
## 58            Invasive       30.0           Work 2023-05-11
## 59            Invasive       30.0           Work 2023-05-11
## 60            Invasive       37.5           Work 2023-05-15
## 61            Invasive       37.5           Work 2023-05-15
## 62            Invasive       37.5           Work 2023-05-16
## 63            Invasive       37.5           Work 2023-05-16
## 64            Invasive       37.5           Work 2023-05-16
## 65            Invasive       37.5           Work 2023-05-17
## 66            Invasive       37.5           Work 2023-05-17
## 67          MixedGrass       37.5           Work 2023-05-17
## 68            Invasive       37.5           Work 2023-05-19
## 69            Invasive       37.5           Work 2023-05-19
## 70            Invasive       37.5           Work 2023-05-23
## 71            Invasive       37.5           Work 2023-05-23
## 72            Invasive       37.5           Work 2023-05-24
## 73            Invasive       37.5           Work 2023-05-24
## 74            Invasive       37.5           Work 2023-05-24
## 75            Invasive       37.5           Work 2023-05-24
## 76            Invasive       37.5           Work 2023-05-24
## 77            Invasive       35.0           Work 2023-05-25
## 78            Invasive       37.5           Work 2023-05-26
## 79            Invasive       37.5           Work 2023-05-26
## 80            Invasive       37.5           Work 2023-05-29
## 81            Invasive       30.0           Work 2023-05-30
## 82            Invasive       30.0           Work 2023-05-30
## 83            Invasive       34.0           Work 2023-05-31
## 84            Invasive       34.0           Work 2023-05-31
## 85            Invasive       37.5           Work 2023-06-01
## 86            Invasive       30.0           Work 2023-06-06
## 87            Invasive       37.5           Work 2023-06-07
## 88            Invasive       37.5           Work 2023-06-07
## 89            Invasive       37.5           Work 2023-06-12
## 90            Invasive       28.5           Work 2023-06-13
## 91            Invasive       37.5           Work 2023-06-14
## 92            Invasive       28.0           Work 2023-06-15
## 93            Invasive       37.5           Work 2023-06-19
## 94            Invasive       37.5           Work 2023-06-19
## 95            Invasive       34.5           Work 2023-06-20
## 96            Invasive       36.5           Work 2023-06-22
## 97            Invasive       22.5           Work 2023-06-23
## 98            Invasive       32.5           Work 2023-07-04
## 99            Invasive       37.5           Work 2023-07-17
## 100           Invasive       37.5           Work 2023-07-17
## 101           Invasive       37.5           Work 2023-07-17
## 102           Invasive       27.5           Work 2023-07-19
## 103           Invasive       27.5           Work 2023-07-19
## 104           Invasive       27.5           Work 2023-07-19
## 105           Invasive       27.5           Work 2023-07-19
## 106           Invasive       17.0           Work 2023-07-20
## 107           Invasive       17.0           Work 2023-07-20
## 108           Invasive       15.0           Work 2023-07-21
## 109           Invasive       15.0           Work 2023-07-21
## 110           Invasive       15.0           Work 2023-07-24
## 111           Invasive       15.0           Work 2023-07-25
## 112           Invasive       22.5           Work 2023-07-26
## 113           Invasive       22.5           Work 2023-07-27
## 114           Invasive       22.5           Work 2023-07-27
## 115           Invasive       22.5           Work 2023-07-27
## 116           Invasive       15.0           Work 2023-07-28
## 117           Invasive       15.0           Work 2023-08-15
## 118           Invasive       29.0           Work 2023-08-16
## 119           Invasive       37.5           Work 2023-08-17
## 120           Invasive       30.0           Work 2023-08-18
## 121           Invasive       40.0           Work 2023-08-21
## 122           Invasive       40.0           Work 2023-08-21
## 123           Invasive       30.0           Work 2023-08-22
## 124           Invasive       30.0           Work 2023-08-22
## 125           Invasive       37.5           Work 2023-08-23
## 126           Invasive       37.5           Work 2023-08-23
## 127           Invasive       37.5           Work 2023-08-24
## 128           Invasive       30.0           Work 2023-08-28
## 129           Invasive       37.5           Work 2023-08-29
## 130           Invasive       45.0           Work 2023-08-30
## 131           Invasive       37.5           Work 2023-08-31
## 132           Invasive       30.0           Work 2023-09-01
## 133           Invasive       45.0           Work 2023-09-19
## 134           Invasive       37.5           Work 2023-09-20
## 135           Invasive       37.5           Work 2023-09-20
## 136           Invasive       26.5           Work 2023-12-07
## 137           Invasive       20.0           Work 2023-12-08
## 138           Invasive       30.0           Work 2024-05-21
## 139           Invasive       22.5           Work 2024-05-23
## 140           Invasive       22.5           Work 2024-06-03
## 141           Invasive       30.0           Work 2024-06-04
## 142           Invasive       30.5           Work 2024-06-05
## 143           Invasive       22.5           Work 2024-06-06
## 144           Invasive       30.0           Work 2024-06-07
## 145           Invasive       34.0           Work 2024-06-10
## 146           Invasive       34.0           Work 2024-06-11
## 147           Invasive       22.5           Work 2024-06-20
## 148           Invasive       15.0           Work 2024-06-21
## 149           Invasive       30.0           Work 2024-07-02
## 150           Invasive       30.0           Work 2024-07-03
## 151           Invasive       30.0           Work 2024-07-04
## 152           Invasive       30.0           Work 2024-07-05
## 153           Invasive       34.0           Work 2024-07-16
## 154           Invasive       30.5           Work 2024-07-24
## 155           Invasive       30.5           Work 2024-07-24
## 156           Invasive       30.5           Work 2024-07-24
## 157           Invasive       30.5           Work 2024-07-24
## 158           Invasive       30.0           Work 2024-08-13
## 159           Invasive       30.0           Work 2024-08-15
## 160           Invasive       22.5           Work 2024-08-27
## 161           Invasive       22.5           Work 2024-08-27
## 162           Invasive       30.0           Work 2024-09-03
## 163           Invasive       30.0           Work 2024-09-09
## 164           Invasive       30.0           Work 2024-09-09
## 165           Invasive       30.0           Work 2024-09-20
## 166           Invasive       26.5           Work 2024-10-01
## 167           Invasive       22.5           Work 2024-10-02
## 168           Invasive       22.5           Work 2024-10-03
## 169           Invasive       22.5           Work 2024-10-04
## 170         MixedGrass       15.0           Work 2024-10-07
## 171         MixedGrass       38.0           Work 2024-10-08
## 172         MixedGrass       38.0           Work 2024-10-08
## 173         MixedGrass       22.5           Work 2024-10-10
## 174         MixedGrass       22.5           Work 2024-10-11
## 175           Invasive       22.5           Work 2024-10-29
## 176           Invasive       15.0           Work 2024-10-30
## 177           Invasive       22.5           Work 2024-10-31
## 178           Invasive       22.5           Work 2024-11-01
## 179           Invasive       22.5           Work 2024-11-04
## 180         MixedGrass       22.5           Work 2024-11-04
## 181           Invasive       30.0           Work 2024-11-05
## 182           Invasive       30.0           Work 2024-11-06
## 183           Invasive       22.5           Work 2024-11-07
## 184         MixedGrass       22.5           Work 2024-11-12
## 185               <NA>       15.0           Work 2024-11-14
## 186           Invasive       30.0           Work 2024-11-18
## 187           Invasive       30.0           Work 2025-04-02
## 188           Invasive       26.5           Work 2025-04-03
## 189           Invasive       15.0           Work 2025-04-04
## 190           Invasive       36.0           Work 2025-04-07
## 191           Invasive       30.0           Work 2025-04-09
## 192           Invasive       37.5           Work 2025-04-14
## 193           Invasive       37.5           Work 2025-04-15
## 194           Invasive       37.5           Work 2025-04-16
## 195           Invasive       27.5           Work 2025-04-17
## 196           Invasive       37.5           Work 2025-04-21
## 197           Invasive       33.0           Work 2025-04-22
## 198           Invasive       30.0           Work 2025-04-23
## 199           Invasive       37.5           Work 2025-04-24
## 200           Invasive       22.5           Work 2025-05-05
## 201           Invasive       25.0           Work 2025-05-06
## 202           Invasive       22.5           Work 2025-05-09
## 203           Invasive       30.0           Work 2025-05-12
## 204           Invasive       22.5           Work 2025-05-16
## 205           Invasive       22.5           Work 2025-05-20
## 206           Invasive       22.5           Work 2025-05-21
## 207           Invasive       30.0           Work 2025-05-26
## 208           Invasive       22.5           Work 2025-05-30
## 209           Invasive       30.0           Work 2024-07-25
## 210           Invasive       15.0           Work 2023-07-25
## 211           Invasive       30.0           Work 2024-07-25
## 212           Invasive       30.0           Work 2024-07-25
## 213           Invasive       15.0           Work 2023-07-25
## 214           Invasive       30.0           Work 2025-07-28
## 215           Invasive       30.0           Work 2025-07-28
## 216           Invasive       22.5           Work 2025-08-13
## 217           Invasive       22.5           Work 2025-08-14
## 218           Invasive       37.5           Work 2025-09-02
## 219           Invasive       37.5           Work 2025-09-02
## 220           Invasive       37.5           Work 2025-09-02
## 221               <NA>       37.5           Work 2025-09-04
## 222           Invasive       30.0           Work 2025-09-05
## 223           Invasive       30.0           Work 2025-09-05
## 224           Invasive       30.0           Work 2025-09-05
## 225           Invasive       30.0           Work 2025-09-10
## 226           Invasive       22.5           Work 2025-09-11
## 227           Invasive       21.5           Work 2025-09-12
## 228           Invasive       21.5           Work 2025-09-12
## 229           Invasive       30.0           Work 2025-09-15
## 230           Invasive       37.5           Work 2025-09-16
## 231           Invasive       37.5           Work 2025-09-17
## 232           Invasive       18.0           Work 2025-09-18
## 233         MixedGrass       18.0           Work 2025-09-18
## 234           Invasive       30.0           Work 2023-09-21
## 235           Invasive       30.0           Work 2023-09-21
## 236           Invasive       22.5           Work 2025-09-22
## 237           Invasive       22.5           Work 2025-09-23
## 238               <NA>        0.0           Work 2025-10-21
write.csv(crew_data_sep_sub, "data/crew_data_sep_sub.csv", row.names = FALSE)

4.1.4 Save Matson Fieldlog Data subset

write.csv(matson_fieldlog_2022_2025_sub, "data/MatsonMattocksFieldLog-2016-2024/matson_fieldlog_2022_2025_sub.csv", row.names = FALSE)
write.csv(matson_fieldlog_2024_sub, "data/MatsonMattocksFieldLog-2016-2024/matson_fieldlog_2024_sub.csv", row.names = FALSE)

4.1.5 Filter by Site HAT Crew

colnames(crew_data_sep_sub)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
unique(crew_data_sep_sub$Work_Site)
## [1] "Oak Haven Park"           "Matson Conservation Area"
## [3] "Havenwood Park"           "Yates"                   
## [5] "Camas Hill"               "Funk"                    
## [7] "Bear Hill"                "Purple Sanicle"          
## [9] "Calypso Woods"
crew_data_sep_sub_matson <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Matson Conservation Area",]
crew_data_sep_sub_OHP <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Oak Haven Park",]
crew_data_sep_sub_yates <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Yates",]
crew_data_sep_sub_funk <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Funk",]
crew_data_sep_sub_ps <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Purple Sanicle",]
crew_data_sep_sub_calypso <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Calypso Woods",]
crew_data_sep_sub_camas <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Camas Hill",]
crew_data_sep_sub_havenwood <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Havenwood Park",]
crew_data_sep_sub_bear <- crew_data_sep_sub[crew_data_sep_sub$Work_Site == "Bear Hill",]

4.1.6 Multiple Invasive Species Removed

  • will need to make a new column - too many errors to fix, different capitalization, space at end of name
length(unique(crew_data_sep_sub$Invasive_Species_Cleared)) #23
## [1] 23
unique(crew_data_sep_sub$Invasive_Species_Cleared)
##  [1] "daphne"               "Scotch broom"         "holly"               
##  [4] "English ivy"          "Himalayan blackberry" "invasive grasses"    
##  [7] "privet"               "orchard grass"        "sedge"               
## [10] "garlic"               "shiny geranium"       "cleavers"            
## [13] "English hawthorn"     "misc species"         "thistle"             
## [16] "thatch"               "sweet vernal grass"   NA                    
## [19] "tansy"                "periwinkle"           "purple toadflax"     
## [22] "buttercup"            "reed canary grass"

4.1.7 Calculate Sums of Biomass and Hours

colnames(crew_data_sep_sub)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
crew_data_sep_sub_sum_bio_inv <- crew_data_sep_sub %>%
  group_by(Work_Site, Year, Invasive_Species_Cleared, Data_Change_Assumptions, Work_Volunteer) %>%
  summarise(Biomass_Removed_m3 = sum(Biomass_Removed_m3), 
            Crew_Hours = sum(Crew_Hours),
            Area_Cleared_m2 = sum(Area_Cleared_m2)
            )
## `summarise()` has grouped output by 'Work_Site', 'Year',
## 'Invasive_Species_Cleared', 'Data_Change_Assumptions'. You can override using
## the `.groups` argument.
crew_data_sep_sub_sum_bio_inv
## # A tibble: 95 × 8
## # Groups:   Work_Site, Year, Invasive_Species_Cleared, Data_Change_Assumptions
## #   [95]
##    Work_Site   Year Invasive_Species_Cle…¹ Data_Change_Assumpti…² Work_Volunteer
##    <chr>      <int> <chr>                  <chr>                  <chr>         
##  1 Bear Hill   2024 misc species           "??"                   Work          
##  2 Calypso W…  2025 Scotch broom           ""                     Work          
##  3 Camas Hill  2023 Scotch broom           ""                     Work          
##  4 Camas Hill  2024 Scotch broom           ""                     Work          
##  5 Camas Hill  2025 Scotch broom           ""                     Work          
##  6 Camas Hill  2025 <NA>                   ""                     Work          
##  7 Funk        2023 Scotch broom           ""                     Work          
##  8 Funk        2024 Scotch broom           ""                     Work          
##  9 Funk        2025 Scotch broom           ""                     Work          
## 10 Havenwood…  2023 Himalayan blackberry   "estimate 1/2 of biom… Work          
## # ℹ 85 more rows
## # ℹ abbreviated names: ¹​Invasive_Species_Cleared, ²​Data_Change_Assumptions
## # ℹ 3 more variables: Biomass_Removed_m3 <dbl>, Crew_Hours <dbl>,
## #   Area_Cleared_m2 <dbl>
# Check to ensure unique values of Invasive Species Cleared
unique(crew_data_sep_sub_sum_bio_inv$Invasive_Species_Cleared)
##  [1] "misc species"         "Scotch broom"         NA                    
##  [4] "Himalayan blackberry" "English ivy"          "invasive grasses"    
##  [7] "English hawthorn"     "cleavers"             "daphne"              
## [10] "garlic"               "orchard grass"        "privet"              
## [13] "sedge"                "thatch"               "thistle"             
## [16] "buttercup"            "periwinkle"           "purple toadflax"     
## [19] "reed canary grass"    "holly"                "shiny geranium"      
## [22] "sweet vernal grass"   "tansy"
# Save Calculation subset
write.csv(crew_data_sep_sub_sum_bio_inv, "data/crew_data_sep_sub_sum_bio_inv.csv", row.names = FALSE)

4.1.8 **** Calculations Group by Work Site and add work hours and biomass removed

colnames(crew_data_sep_sub)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
str(crew_data_sep_sub)
## 'data.frame':    238 obs. of  10 variables:
##  $ Year                    : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Work_Site               : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Area_Cleared_m2         : num  540 540 588 588 750 ...
##  $ Biomass_Removed_m3      : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive      : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours              : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer          : chr  "Work" "Work" "Work" "Work" ...
##  $ Date                    : Date, format: "2022-09-07" "2022-09-07" ...
# aggregate(crew_data_sep_sub$Work_Site, by=list(Biomass_Removed_m3=crew_data_sep_sub$Biomass_Removed_m3), FUN=sum)
## Error in FUN(X[[i]], ...) : invalid 'type' (character) of argument

# crew_data_sep_sub_sum_by_group_site <- crew_data_sep_sub %>%
#   group_by(Work_Site, Year) %>%
#   summarise(Biomass_Removed_m3 = sum(Biomass_Removed_m3), 
#             Crew_Hours = sum(Crew_Hours),
#             Area_Cleared_m2 = sum(Area_Cleared_m2))
# crew_data_sep_sub_sum_by_group_site
# write.csv(crew_data_sep_sub_sum_by_group_site, "data/crew_data_sep_sub_sum_by_group_site.csv", row.names = FALSE)


crew_data_sep_sub_sum_by_group_site_hr_bio_ratio <- crew_data_sep_sub %>%
  group_by(Work_Site, Year, Work_Volunteer) %>%
  summarise(Biomass_Removed_m3 = sum(Biomass_Removed_m3), 
            Crew_Hours = sum(Crew_Hours),
            Area_Cleared_m2 = sum(Area_Cleared_m2),
            Labour_Hr_Bio_Ratio = round(sum(Crew_Hours)/sum(Biomass_Removed_m3), digits = 1),
            Labour_Bio_Hr_Ratio = round(sum(Biomass_Removed_m3)/sum(Crew_Hours), digits = 1), 
            Area_Bio_Ratio = round(sum(Area_Cleared_m2)/sum(Biomass_Removed_m3), digits = 1), 
            )
## `summarise()` has grouped output by 'Work_Site', 'Year'. You can override using
## the `.groups` argument.
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio
## # A tibble: 23 × 9
## # Groups:   Work_Site, Year [23]
##    Work_Site   Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##    <chr>      <int> <chr>                       <dbl>      <dbl>           <dbl>
##  1 Bear Hill   2024 Work                         33         68              729 
##  2 Calypso W…  2025 Work                          3         30              595.
##  3 Camas Hill  2023 Work                         59        258             2800 
##  4 Camas Hill  2024 Work                          8.8      120              842.
##  5 Camas Hill  2025 Work                         14.7      188.            4986.
##  6 Funk        2023 Work                          5         34.5           1513 
##  7 Funk        2024 Work                          4         30             3549 
##  8 Funk        2025 Work                          3         22.5           5345.
##  9 Havenwood…  2023 Work                         15         75              200 
## 10 Havenwood…  2024 Work                          2.5       30              342 
## # ℹ 13 more rows
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
# Save Calculation subset
write.csv(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, "data/crew_data_sep_sub_sum_by_group_site_hr_bio_ratio.csv", row.names = FALSE)

4.1.9 add summary stats to Crew data

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio
## # A tibble: 23 × 9
## # Groups:   Work_Site, Year [23]
##    Work_Site   Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##    <chr>      <int> <chr>                       <dbl>      <dbl>           <dbl>
##  1 Bear Hill   2024 Work                         33         68              729 
##  2 Calypso W…  2025 Work                          3         30              595.
##  3 Camas Hill  2023 Work                         59        258             2800 
##  4 Camas Hill  2024 Work                          8.8      120              842.
##  5 Camas Hill  2025 Work                         14.7      188.            4986.
##  6 Funk        2023 Work                          5         34.5           1513 
##  7 Funk        2024 Work                          4         30             3549 
##  8 Funk        2025 Work                          3         22.5           5345.
##  9 Havenwood…  2023 Work                         15         75              200 
## 10 Havenwood…  2024 Work                          2.5       30              342 
## # ℹ 13 more rows
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
crew_data_site_stats_bh <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Bear Hill",]
crew_data_site_stats_cw <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Calypso Woods",]
crew_data_site_stats_ch <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Camas Hill",]
crew_data_site_stats_f <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Funk",]
crew_data_site_stats_hp <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Havenwood Park",]
crew_data_site_stats_mca <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Matson Conservation Area",]
crew_data_site_stats_ohp <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Oak Haven Park",]
crew_data_site_stats_ps <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Purple Sanicle",]
crew_data_site_stats_y <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site == "Yates",]

4.2 HAT Cover Data

4.2.1 rbind 4 file ojbects into 1 in long format

HAT_cover_OH_MM <- rbind(cover_OH_2024, cover_OH_2025, cover_MCA_2024, cover_MCA_2025)


unique(HAT_cover_OH_MM$Species) #47
##  [1] "bur chervil "           "camas"                  "common plantain"       
##  [4] "Oregon grape"           "grass"                  "licorice fern"         
##  [7] "mixed grass"            "moss"                   "Oregon grape "         
## [10] "Scotch broom "          "shiny geranium"         "snowberry"             
## [13] "vetch"                  "chickweed "             "field chickweed"       
## [16] "moss & grass"           "Scotch broom"           "shooting star"         
## [19] "Pacific sanicle"        "herb robert geranium"   "fawn lily"             
## [22] "Menzies larkspur"       "saxifrage species"      "rose"                  
## [25] "mixed invasive grasses" "speedwell"              "mixed moss and grass"  
## [28] "delphinium"             "onion"                  "Pacific sanicle "      
## [31] "oceanspray "            "blue wildrye"           "Himalayan blackberry"  
## [34] "English ivy"            "tall Oregon grape"      "trailing blackberry"   
## [37] "Garry oak"              ""                       "aster"                 
## [40] "grass "                 "oceanspray"             "pickly wall lettuce "  
## [43] "daphne"                 "leaf mulch "            "orchard grass"         
## [46] "orchard grass "         "snowberry "             "trailing blackberry "  
## [49] "unknown"
# trim trailing while spaces
HAT_cover_OH_MM$Species <- trimws(HAT_cover_OH_MM$Species)
species_unique <- unique(HAT_cover_OH_MM$Species) #39

 
# create a list of comma separated values for list of species names, but in no order
 comma_separated_sp_names <- paste(species_unique, collapse = ", ")
 comma_separated_sp_names
## [1] "bur chervil, camas, common plantain, Oregon grape, grass, licorice fern, mixed grass, moss, Scotch broom, shiny geranium, snowberry, vetch, chickweed, field chickweed, moss & grass, shooting star, Pacific sanicle, herb robert geranium, fawn lily, Menzies larkspur, saxifrage species, rose, mixed invasive grasses, speedwell, mixed moss and grass, delphinium, onion, oceanspray, blue wildrye, Himalayan blackberry, English ivy, tall Oregon grape, trailing blackberry, Garry oak, , aster, pickly wall lettuce, daphne, leaf mulch, orchard grass, unknown"
 str(comma_separated_sp_names)
##  chr "bur chervil, camas, common plantain, Oregon grape, grass, licorice fern, mixed grass, moss, Scotch broom, shiny"| __truncated__
 # these did not sort in any order
#  comma_separated_sp_names_sort <- as_tibble(comma_separated_sp_names) %>%
#  arrange(comma_separated_sp_names)
# comma_separated_sp_names_sort

# update sort ID column
HAT_cover_OH_MM$SortID <- 1:nrow(HAT_cover_OH_MM)


# as.Date
str(HAT_cover_OH_MM)
## 'data.frame':    242 obs. of  16 variables:
##  $ SortID            : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ MonitorID         : chr  "T-CL" "T-CL" "T-HD" "T-HD" ...
##  $ QUniqueID         : logi  NA NA NA NA NA NA ...
##  $ Date              : chr  "2024-11-06" "2024-11-06" "2024-11-06" "2024-11-06" ...
##  $ Year              : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ Location          : chr  "Oak Haven" "Oak Haven" "Oak Haven" "Oak Haven" ...
##  $ Treated           : chr  "Treated" "Treated" "Treated" "Treated" ...
##  $ YearTreated       : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ ExSpTabTitle      : chr  NA NA NA NA ...
##  $ Baseline          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Quadrat           : chr  "Q2" "Q1" "Q1" "Q3" ...
##  $ QuadratLocation_m : num  3.3 4.3 4.3 8.3 4.3 3.3 8.3 4.3 4.3 3.3 ...
##  $ Species           : chr  "bur chervil" "camas" "common plantain" "Oregon grape" ...
##  $ Native_or_Invasive: chr  "Invasive" "Native" "Invasive" "Native" ...
##  $ PercentCover      : int  1 2 1 25 40 10 25 1 3 4 ...
##  $ OriginalSpecies   : chr  "Bur chervil " "Camas " "Frog plantain" "Dull Oregon grape" ...
HAT_cover_OH_MM$Date <- as.Date(HAT_cover_OH_MM$Date)
str(HAT_cover_OH_MM)
## 'data.frame':    242 obs. of  16 variables:
##  $ SortID            : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ MonitorID         : chr  "T-CL" "T-CL" "T-HD" "T-HD" ...
##  $ QUniqueID         : logi  NA NA NA NA NA NA ...
##  $ Date              : Date, format: "2024-11-06" "2024-11-06" ...
##  $ Year              : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ Location          : chr  "Oak Haven" "Oak Haven" "Oak Haven" "Oak Haven" ...
##  $ Treated           : chr  "Treated" "Treated" "Treated" "Treated" ...
##  $ YearTreated       : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
##  $ ExSpTabTitle      : chr  NA NA NA NA ...
##  $ Baseline          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Quadrat           : chr  "Q2" "Q1" "Q1" "Q3" ...
##  $ QuadratLocation_m : num  3.3 4.3 4.3 8.3 4.3 3.3 8.3 4.3 4.3 3.3 ...
##  $ Species           : chr  "bur chervil" "camas" "common plantain" "Oregon grape" ...
##  $ Native_or_Invasive: chr  "Invasive" "Native" "Invasive" "Native" ...
##  $ PercentCover      : int  1 2 1 25 40 10 25 1 3 4 ...
##  $ OriginalSpecies   : chr  "Bur chervil " "Camas " "Frog plantain" "Dull Oregon grape" ...
# Concatenate QUniqueID
colnames(HAT_cover_OH_MM)
##  [1] "SortID"             "MonitorID"          "QUniqueID"         
##  [4] "Date"               "Year"               "Location"          
##  [7] "Treated"            "YearTreated"        "ExSpTabTitle"      
## [10] "Baseline"           "Quadrat"            "QuadratLocation_m" 
## [13] "Species"            "Native_or_Invasive" "PercentCover"      
## [16] "OriginalSpecies"
HAT_cover_OH_MM$QUniqueID <- paste(HAT_cover_OH_MM$MonitorID, HAT_cover_OH_MM$Quadrat, HAT_cover_OH_MM$QuadratLocation_m, sep = "_")

# Replace hyphen with underscores in QUniqueID
HAT_cover_OH_MM$QUniqueID <- gsub("-", "_", HAT_cover_OH_MM$QUniqueID)

# remove excess coloumns not needed
# including SortID column
colnames(HAT_cover_OH_MM)
##  [1] "SortID"             "MonitorID"          "QUniqueID"         
##  [4] "Date"               "Year"               "Location"          
##  [7] "Treated"            "YearTreated"        "ExSpTabTitle"      
## [10] "Baseline"           "Quadrat"            "QuadratLocation_m" 
## [13] "Species"            "Native_or_Invasive" "PercentCover"      
## [16] "OriginalSpecies"
HAT_cover_OH_MM_sub <- subset(HAT_cover_OH_MM, select = -c(1,2,9,10,11,12,16))
HAT_cover_OH_MM_sub
##          QUniqueID       Date Year  Location   Treated YearTreated
## 1      T_CL_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 2      T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 3      T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 4      T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 5      T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 6      T_HD_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 7      T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 8      T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 9      T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 10     T_HD_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 11     T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 12     T_CL_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 13     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 14     T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 15     T_CL_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 16     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 17     T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 18     T_HD_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 19     T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 20     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 21     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 22     T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 23     T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 24     T_CL_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 25     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 26     T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 27     T_HD_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 28     T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 29     T_CL_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 30     T_CL_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 31     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 32     T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 33     T_HD_Q2_3.3 2024-11-06 2024 Oak Haven   Treated        2024
## 34     T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 35     T_CL_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 36     T_HD_Q1_4.3 2024-11-06 2024 Oak Haven   Treated        2024
## 37     T_HD_Q3_8.3 2024-11-06 2024 Oak Haven   Treated        2024
## 38       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 39     U_CL_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 40    U_CL2_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 41      U_CL2_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 42   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 43    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 44       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 45    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 46     U_CL_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 47   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 48     U_CL_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 49      U_CL2_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 50    U_CL2_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 51   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 52       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 53    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 54     U_CL_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 55    U_CL2_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 56    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 57       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 58      U_CL2_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 59   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 60       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 61    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 62     U_CL_Q3_2.6 2024-11-07 2024 Oak Haven Untreated          NA
## 63   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 64       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 65    U_CL_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 66      U_CL2_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 67   U_CL2_Q2_13.3 2024-11-07 2024 Oak Haven Untreated          NA
## 68       U_CL_Q1_9 2024-11-07 2024 Oak Haven Untreated          NA
## 69     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 70     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 71     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 72     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 73     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 74     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 75     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 76     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 77     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 78     T_DL_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 79     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 80     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 81     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 82     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 83     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 84     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 85     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 86     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 87     T_DL_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 88     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 89     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 90     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 91     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 92     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 93     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 94     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 95     T_DL_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 96       U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 97       U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 98       U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 99       U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 100      U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 101      U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 102      U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 103      U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 104      U_DL_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 105   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 106   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 107   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 108   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 109   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 110   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 111   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 112   U_DL_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 113    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 114    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 115    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 116    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 117    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 118    U_DL_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 119      U_CH_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 120      U_CH_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 121      U_CH_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 122      U_CH_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 123      U_CH_Q1_9 2025-04-03 2025 Oak Haven Untreated          NA
## 124   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 125   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 126   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 127   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 128   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 129   U_CH_Q2_13.3 2025-04-03 2025 Oak Haven Untreated          NA
## 130    U_CH_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 131    U_CH_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 132    U_CH_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 133    U_CH_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 134    U_CH_Q3_2.6 2025-04-03 2025 Oak Haven Untreated          NA
## 135    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 136    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 137    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 138    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 139    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 140    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 141    T_CH_Q1_4.3 2025-04-02 2025 Oak Haven   Treated        2024
## 142    T_CH_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 143    T_CH_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 144    T_CH_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 145    T_CH_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 146    T_CH_Q2_3.3 2025-04-02 2025 Oak Haven   Treated        2024
## 147    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 148    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 149    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 150    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 151    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 152    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 153    T_CH_Q3_8.3 2025-04-02 2025 Oak Haven   Treated        2024
## 154    T_HCDD_Q1_2 2024-07-24 2024    Matson   Treated        2024
## 155    T_HCDD_Q1_2 2024-07-24 2024    Matson   Treated        2024
## 156    T_HCDD_Q1_2 2024-07-24 2024    Matson   Treated        2024
## 157    T_HCDD_Q2_5 2024-07-24 2024    Matson   Treated        2024
## 158    T_HCDD_Q2_5 2024-07-24 2024    Matson   Treated        2024
## 159    T_HCDD_Q2_5 2024-07-24 2024    Matson   Treated        2024
## 160    T_HCDD_Q2_5 2024-07-24 2024    Matson   Treated        2024
## 161    T_HCDD_Q2_5 2024-07-24 2024    Matson   Treated        2024
## 162    T_HCDD_Q3_8 2024-07-24 2024    Matson   Treated        2024
## 163    T_HCDD_Q3_8 2024-07-24 2024    Matson   Treated        2024
## 164    T_HCDD_Q3_8 2024-07-24 2024    Matson   Treated        2024
## 165 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 166 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 167 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 168 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 169 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 170 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 171 U_HCDD_Q1_3.66 2024-07-25 2024    Matson Untreated          NA
## 172  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 173  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 174  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 175  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 176  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 177  U_HCDD_Q2_5.7 2024-07-25 2024    Matson Untreated          NA
## 178  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 179  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 180  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 181  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 182  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 183  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 184  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 185  U_HCDD_Q3_7.3 2024-07-25 2024    Matson Untreated          NA
## 186           __NA       <NA>   NA                              NA
## 187      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 188      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 189      T_LJ_Q3_4 2025-07-28 2025    Matson   Treated        2024
## 190      T_DH_Q3_8 2025-07-28 2025    Matson   Treated        2024
## 191      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 192      T_DH_Q3_8 2025-07-28 2025    Matson   Treated        2024
## 193      T_DH_Q1_4 2025-07-28 2025    Matson   Treated        2024
## 194      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 195      T_LJ_Q2_1 2025-07-28 2025    Matson   Treated        2024
## 196      T_LJ_Q3_4 2025-07-28 2025    Matson   Treated        2024
## 197      T_DH_Q2_1 2025-07-28 2025    Matson   Treated        2024
## 198      T_DH_Q3_8 2025-07-28 2025    Matson   Treated        2024
## 199      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 200      T_LJ_Q3_4 2025-07-28 2025    Matson   Treated        2024
## 201      T_DH_Q1_4 2025-07-28 2025    Matson   Treated        2024
## 202      T_DH_Q3_8 2025-07-28 2025    Matson   Treated        2024
## 203      T_LJ_Q2_1 2025-07-28 2025    Matson   Treated        2024
## 204      T_DH_Q2_1 2025-07-28 2025    Matson   Treated        2024
## 205      T_LJ_Q1_8 2025-07-28 2025    Matson   Treated        2024
## 206      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 207      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 208      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 209      U_DH_Q1_2 2025-07-28 2025    Matson Untreated          NA
## 210      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 211      U_DH_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 212      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 213      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 214      U_DH_Q1_2 2025-07-28 2025    Matson Untreated          NA
## 215      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 216      U_DH_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 217      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
## 218      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 219      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 220      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 221      U_DH_Q1_2 2025-07-28 2025    Matson Untreated          NA
## 222      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 223      U_DH_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 224      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 225      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
## 226      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 227      U_DH_Q1_2 2025-07-28 2025    Matson Untreated          NA
## 228      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 229      U_DH_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 230      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
## 231      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 232      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 233      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
## 234      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 235      U_LJ_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 236      U_DH_Q1_2 2025-07-28 2025    Matson Untreated          NA
## 237      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 238      U_DH_Q3_9 2025-07-28 2025    Matson Untreated          NA
## 239      U_DH_Q2_4 2025-07-28 2025    Matson Untreated          NA
## 240      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
## 241      U_LJ_Q2_2 2025-07-28 2025    Matson Untreated          NA
## 242      U_LJ_Q1_4 2025-07-28 2025    Matson Untreated          NA
##                    Species Native_or_Invasive PercentCover
## 1              bur chervil           Invasive            1
## 2                    camas             Native            2
## 3          common plantain           Invasive            1
## 4             Oregon grape             Native           25
## 5                    grass         MixedGrass           40
## 6                    grass         MixedGrass           10
## 7                    grass         MixedGrass           25
## 8            licorice fern             Native            1
## 9            licorice fern             Native            3
## 10           licorice fern             Native            4
## 11             mixed grass         MixedGrass           20
## 12             mixed grass         MixedGrass           19
## 13             mixed grass         MixedGrass           20
## 14                    moss         MixedGrass            8
## 15                    moss         MixedGrass           35
## 16                    moss         MixedGrass           20
## 17                    moss         MixedGrass           15
## 18                    moss         MixedGrass           60
## 19                    moss         MixedGrass           10
## 20            Oregon grape             Native           15
## 21            Scotch broom           Invasive            3
## 22            Scotch broom           Invasive            4
## 23          shiny geranium           Invasive           55
## 24          shiny geranium           Invasive           40
## 25          shiny geranium           Invasive           25
## 26          shiny geranium           Invasive           30
## 27          shiny geranium           Invasive           23
## 28          shiny geranium           Invasive           15
## 29               snowberry             Native           14
## 30               snowberry             Native            5
## 31               snowberry             Native           15
## 32               snowberry             Native           10
## 33               snowberry             Native            3
## 34               snowberry             Native           20
## 35                   vetch           Invasive            2
## 36                   vetch           Invasive            1
## 37                   vetch           Invasive            1
## 38                   camas             Native            2
## 39                   camas             Native            3
## 40                   camas             Native            3
## 41               chickweed           Invasive            5
## 42               chickweed           Invasive            5
## 43         field chickweed           Invasive           15
## 44                   grass         MixedGrass           73
## 45                   grass         MixedGrass           30
## 46                   grass         MixedGrass           19
## 47                   grass         MixedGrass           40
## 48                    moss         MixedGrass           75
## 49            moss & grass         MixedGrass           67
## 50            moss & grass         MixedGrass           94
## 51            Oregon grape             Native           40
## 52            Oregon grape             Native           15
## 53            Oregon grape             Native           20
## 54            Oregon grape             Native            2
## 55            Oregon grape             Native            3
## 56            Scotch broom           Invasive            5
## 57            Scotch broom           Invasive            3
## 58            Scotch broom           Invasive            8
## 59            Scotch broom           Invasive            5
## 60          shiny geranium           Invasive            5
## 61          shiny geranium           Invasive           20
## 62          shiny geranium           Invasive            1
## 63          shiny geranium           Invasive            5
## 64               snowberry             Native            1
## 65               snowberry             Native           10
## 66               snowberry             Native           20
## 67               snowberry             Native            5
## 68                   vetch           Invasive            1
## 69           shooting star             Native           10
## 70         Pacific sanicle             Native            3
## 71                   camas             Native           10
## 72    herb robert geranium           Invasive            4
## 73          shiny geranium           Invasive           10
## 74               fawn lily             Native            3
## 75                    moss         MixedGrass           25
## 76        Menzies larkspur             Native            9
## 77       saxifrage species             Native            1
## 78             mixed grass         MixedGrass           25
## 79               fawn lily             Native            1
## 80           shooting star             Native            8
## 81               snowberry             Native            2
## 82        Menzies larkspur             Native           10
## 83                   camas             Native           10
## 84          shiny geranium           Invasive           20
## 85    herb robert geranium           Invasive            9
## 86                    moss         MixedGrass            8
## 87             mixed grass         MixedGrass           32
## 88            Oregon grape             Native            8
## 89               snowberry             Native           19
## 90            Scotch broom           Invasive            1
## 91          shiny geranium           Invasive           35
## 92             mixed grass         MixedGrass           20
## 93                    moss         MixedGrass           15
## 94               fawn lily             Native            1
## 95         Pacific sanicle             Native            1
## 96            Oregon grape             Native            9
## 97               snowberry             Native           14
## 98               fawn lily             Native            5
## 99           shooting star             Native            5
## 100            mixed grass         MixedGrass           50
## 101        field chickweed           Invasive            2
## 102       Menzies larkspur             Native            5
## 103                  camas             Native            5
## 104           Scotch broom           Invasive            5
## 105           Oregon grape             Native           14
## 106              snowberry             Native            8
## 107                  camas             Native            5
## 108            mixed grass         MixedGrass           62
## 109                   rose             Native            1
## 110              fawn lily             Native            1
## 111        field chickweed           Invasive            1
## 112                   moss         MixedGrass            8
## 113       Menzies larkspur             Native           13
## 114                  camas             Native           13
## 115          shooting star             Native            5
## 116 mixed invasive grasses         MixedGrass           53
## 117              speedwell           Invasive            1
## 118   mixed moss and grass         MixedGrass           15
## 119              fawn lily             Native            5
## 120             delphinium             Native            2
## 121          shooting star             Native            1
## 122                  camas             Native            2
## 123            mixed grass         MixedGrass           90
## 124           Oregon grape             Native           10
## 125                  camas             Native            3
## 126             delphinium             Native            2
## 127            mixed grass         MixedGrass           81
## 128           Scotch broom           Invasive            2
## 129              fawn lily             Native            2
## 130          shooting star             Native            2
## 131             delphinium             Native            5
## 132              fawn lily             Native            2
## 133   mixed moss and grass         MixedGrass           90
## 134                  onion             Native            1
## 135                  camas             Native            2
## 136             delphinium             Native            8
## 137              fawn lily             Native            2
## 138          shooting star             Native           19
## 139         shiny geranium           Invasive            8
## 140        Pacific sanicle             Native            1
## 141            mixed grass         MixedGrass           60
## 142                  camas             Native            8
## 143             delphinium             Native           10
## 144          shooting star             Native            7
## 145         shiny geranium           Invasive           10
## 146   mixed moss and grass         MixedGrass           65
## 147           Oregon grape             Native           35
## 148              snowberry             Native           14
## 149           Scotch broom           Invasive            3
## 150        field chickweed           Invasive            3
## 151              fawn lily             Native            1
## 152         shiny geranium           Invasive           12
## 153   mixed moss and grass         MixedGrass           32
## 154                  grass         MixedGrass           96
## 155        Pacific sanicle             Native            2
## 156              snowberry             Native            2
## 157                  grass         MixedGrass           84
## 158             oceanspray             Native            3
## 159                  onion             Native            1
## 160           Scotch broom           Invasive            2
## 161                  vetch           Invasive           10
## 162           blue wildrye         MixedGrass            4
## 163                  grass         MixedGrass           94
## 164   Himalayan blackberry           Invasive            2
## 165           Oregon grape             Native            6
## 166            English ivy           Invasive           10
## 167                  grass         MixedGrass           57
## 168        Pacific sanicle             Native            1
## 169              snowberry             Native            2
## 170      tall Oregon grape             Native           14
## 171    trailing blackberry             Native           10
## 172           Oregon grape             Native            2
## 173                  grass         MixedGrass           76
## 174          licorice fern             Native           10
## 175        Pacific sanicle             Native            1
## 176              snowberry             Native            1
## 177    trailing blackberry             Native           10
## 178            English ivy           Invasive            5
## 179              Garry oak             Native            1
## 180                  grass         MixedGrass           20
## 181          licorice fern             Native            5
## 182           Scotch broom           Invasive           25
## 183              snowberry             Native           10
## 184      tall Oregon grape             Native            2
## 185    trailing blackberry             Native            5
## 186                                                     NA
## 187                  aster           Invasive            1
## 188           blue wildrye         MixedGrass           10
## 189           blue wildrye         MixedGrass            5
## 190           blue wildrye         MixedGrass           15
## 191                  camas             Native            4
## 192                  camas             Native            5
## 193                  grass         MixedGrass           90
## 194                  grass         MixedGrass           63
## 195                  grass         MixedGrass           99
## 196                  grass         MixedGrass           85
## 197                  grass         MixedGrass           60
## 198                  grass         MixedGrass           70
## 199   Himalayan blackberry           Invasive           20
## 200   Himalayan blackberry           Invasive            2
## 201   Himalayan blackberry           Invasive           10
## 202   Himalayan blackberry           Invasive           10
## 203                   moss         MixedGrass            1
## 204             oceanspray             Native           40
## 205    pickly wall lettuce           Invasive            2
## 206                 daphne           Invasive            1
## 207            English ivy           Invasive           20
## 208            English ivy           Invasive           10
## 209            English ivy           Invasive           10
## 210            English ivy           Invasive            5
## 211            English ivy           Invasive           10
## 212                  grass         MixedGrass           20
## 213                  grass         MixedGrass           39
## 214                  grass         MixedGrass           85
## 215                  grass         MixedGrass           53
## 216                  grass         MixedGrass           23
## 217             leaf mulch         MixedGrass           37
## 218             leaf mulch         MixedGrass            6
## 219             leaf mulch         MixedGrass            4
## 220          licorice fern             Native            6
## 221          licorice fern             Native            1
## 222          licorice fern             Native            2
## 223          licorice fern             Native            2
## 224                   moss         MixedGrass           20
## 225          orchard grass         MixedGrass           30
## 226          orchard grass         MixedGrass           20
## 227           Oregon grape             Native            7
## 228           Oregon grape             Native           25
## 229           Oregon grape             Native           60
## 230           Oregon grape             Native           15
## 231           Oregon grape             Native           10
## 232           Oregon grape             Native           30
## 233              snowberry             Native            3
## 234              snowberry             Native            3
## 235              snowberry             Native           10
## 236              snowberry             Native            7
## 237              snowberry             Native            5
## 238              snowberry             Native            5
## 239    trailing blackberry             Native           10
## 240    trailing blackberry             Native           10
## 241    trailing blackberry             Native            1
## 242                unknown             Unkown            5
# write csv
write.csv(HAT_cover_OH_MM_sub, "data/HAT_cover_OH_MM_sub.csv", row.names = FALSE)

4.2.2 Filter Subset

4.2.2.1 Native vs Invasive vs MixedGrass

unique(HAT_cover_OH_MM_sub$Native_or_Invasive)
## [1] "Invasive"   "Native"     "MixedGrass" ""           "Unkown"
HAT_cover_OH_MM_sub_nat <- HAT_cover_OH_MM_sub[HAT_cover_OH_MM_sub$Native_or_Invasive == "Native",]

HAT_cover_OH_MM_sub_inv <- HAT_cover_OH_MM_sub[HAT_cover_OH_MM_sub$Native_or_Invasive == "Invasive",]

HAT_cover_OH_MM_sub_mix <- HAT_cover_OH_MM_sub[HAT_cover_OH_MM_sub$Native_or_Invasive == "MixedGrass",]

4.2.2.2 Treated vs Untreated

unique(HAT_cover_OH_MM_sub$Treated)
## [1] "Treated"   "Untreated" ""
HAT_cover_OH_MM_sub_treat <- HAT_cover_OH_MM_sub[HAT_cover_OH_MM_sub$Treated == "Treated",]
HAT_cover_OH_MM_sub_untreat <- HAT_cover_OH_MM_sub[HAT_cover_OH_MM_sub$Treated == "Untreated",]

4.2.3 *** Convert long format to wide format and group by Species

WORKS !!!! See function that creates this wide format

colnames(HAT_cover_OH_MM_sub)
## [1] "QUniqueID"          "Date"               "Year"              
## [4] "Location"           "Treated"            "YearTreated"       
## [7] "Species"            "Native_or_Invasive" "PercentCover"
unique(HAT_cover_OH_MM_sub$Location)
## [1] "Oak Haven" "Matson"    ""
# filter subset
HAT_cover_OH_MM_sub_treat_OH <- HAT_cover_OH_MM_sub_treat[HAT_cover_OH_MM_sub_treat$Location == "Oak Haven",]
HAT_cover_OH_MM_sub_treat_OH_2025 <- HAT_cover_OH_MM_sub_treat_OH[HAT_cover_OH_MM_sub_treat_OH$Year == "2025",]
HAT_cover_OH_MM_sub_treat_OH_2024 <- HAT_cover_OH_MM_sub_treat_OH[HAT_cover_OH_MM_sub_treat_OH$Year == "2024",]
HAT_cover_OH_MM_sub_untreat_OH <- HAT_cover_OH_MM_sub_untreat[HAT_cover_OH_MM_sub_untreat$Location == "Oak Haven",]
HAT_cover_OH_MM_sub_untreat_OH_2025 <- HAT_cover_OH_MM_sub_untreat_OH[HAT_cover_OH_MM_sub_untreat_OH$Year == "2025",]
HAT_cover_OH_MM_sub_untreat_OH_2024 <- HAT_cover_OH_MM_sub_untreat_OH[HAT_cover_OH_MM_sub_untreat_OH$Year == "2024",]

HAT_cover_OH_MM_sub_treat_M <- HAT_cover_OH_MM_sub_treat[HAT_cover_OH_MM_sub_treat$Location == "Matson",]
HAT_cover_OH_MM_sub_treat_M_2025 <- HAT_cover_OH_MM_sub_treat_M[HAT_cover_OH_MM_sub_treat_M$Year == "2025",]
HAT_cover_OH_MM_sub_treat_M_2024 <- HAT_cover_OH_MM_sub_treat_M[HAT_cover_OH_MM_sub_treat_M$Year == "2024",]
HAT_cover_OH_MM_sub_untreat_M <- HAT_cover_OH_MM_sub_untreat[HAT_cover_OH_MM_sub_untreat$Location == "Matson",]
HAT_cover_OH_MM_sub_untreat_M_2025 <- HAT_cover_OH_MM_sub_untreat_M[HAT_cover_OH_MM_sub_untreat_M$Year == "2025",]
HAT_cover_OH_MM_sub_untreat_M_2024 <- HAT_cover_OH_MM_sub_untreat_M[HAT_cover_OH_MM_sub_untreat_M$Year == "2024",]


colnames(HAT_cover_OH_MM_sub_treat_OH_2025)
## [1] "QUniqueID"          "Date"               "Year"              
## [4] "Location"           "Treated"            "YearTreated"       
## [7] "Species"            "Native_or_Invasive" "PercentCover"
# long to wide
HAT_cover_OH_MM_sub_treat_OH_2025_wide <- HAT_cover_OH_MM_sub_treat_OH_2025 %>% 
pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
HAT_cover_OH_MM_sub_treat_OH_2024_wide <- HAT_cover_OH_MM_sub_treat_OH_2024 %>% 
pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)

# HAT_cover_OH_MM_sub_untreat_OH_2025_wide <- HAT_cover_OH_MM_sub_untreat_OH_2025 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
# HAT_cover_OH_MM_sub_untreat_OH_2024_wide <- HAT_cover_OH_MM_sub_untreat_OH_2024 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
# 
# HAT_cover_OH_MM_sub_treat_M_2025_wide <- HAT_cover_OH_MM_sub_treat_M_2025 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
# HAT_cover_OH_MM_sub_treat_M_2024_wide <- HAT_cover_OH_MM_sub_treat_M_2024 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
# 
# HAT_cover_OH_MM_sub_untreat_M_2025_wide <- HAT_cover_OH_MM_sub_untreat_M_2025 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)
# HAT_cover_OH_MM_sub_untreat_M_2024_wide <- HAT_cover_OH_MM_sub_untreat_M_2024 %>%
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)


### SOME PROBLEM WITH DUPLICATE DATA HAT_cover_OH_MM_sub_untreat_OH_2024
# HAT_cover_OH_MM_sub_untreat_OH_2024_wide <- HAT_cover_OH_MM_sub_untreat_OH_2024 %>% 
# pivot_wider(names_from = QUniqueID, values_from = PercentCover, values_fill = 0)

# colnames(HAT_cover_OH_MM_sub_untreat_OH_2024_wide)

# sum all percentage cover per species over all Quadrats
HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg <- HAT_cover_OH_MM_sub_treat_OH_2025_wide %>% 
group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>% 
  summarise(across(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3), sum))
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
colnames(HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg)
##  [1] "Year"               "Date"               "Location"          
##  [4] "Treated"            "Species"            "Native_or_Invasive"
##  [7] "T_DL_Q1_4.3"        "T_DL_Q2_3.3"        "T_DL_Q3_8.3"       
## [10] "T_CH_Q3_8.3"        "T_CH_Q1_4.3"        "T_CH_Q2_3.3"

4.2.4 *** Calculate Mean Cover Percent

WORKS !!!!

### *** Calculate Mean Cover Percent
HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg_mean <- HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg %>%
   group_by(Year, Date, Location, Treated, Species) %>%
  summarise(mean_value = mean(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3)), 
            sd_value = sd(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3))) %>%  
  # round
  mutate_if(is.numeric, round, 2)
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated'. You
## can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
 HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg_mean
## # A tibble: 16 × 7
## # Groups:   Year, Date, Location, Treated [1]
##     Year Date       Location  Treated Species              mean_value sd_value
##    <int> <date>     <chr>     <chr>   <chr>                     <dbl>    <dbl>
##  1  2025 2025-04-02 Oak Haven Treated Menzies larkspur           3.17     4.92
##  2  2025 2025-04-02 Oak Haven Treated Oregon grape               7.17    14.0 
##  3  2025 2025-04-02 Oak Haven Treated Pacific sanicle            0.83     1.17
##  4  2025 2025-04-02 Oak Haven Treated Scotch broom               0.67     1.21
##  5  2025 2025-04-02 Oak Haven Treated camas                      5        4.86
##  6  2025 2025-04-02 Oak Haven Treated delphinium                 3        4.69
##  7  2025 2025-04-02 Oak Haven Treated fawn lily                  1.33     1.03
##  8  2025 2025-04-02 Oak Haven Treated field chickweed            0.5      1.22
##  9  2025 2025-04-02 Oak Haven Treated herb robert geranium       2.17     3.71
## 10  2025 2025-04-02 Oak Haven Treated mixed grass               22.8     22.4 
## 11  2025 2025-04-02 Oak Haven Treated mixed moss and grass      16.2     27.1 
## 12  2025 2025-04-02 Oak Haven Treated moss                       8       10.3 
## 13  2025 2025-04-02 Oak Haven Treated saxifrage species          0.17     0.41
## 14  2025 2025-04-02 Oak Haven Treated shiny geranium            15.8     10.3 
## 15  2025 2025-04-02 Oak Haven Treated shooting star              7.33     7.09
## 16  2025 2025-04-02 Oak Haven Treated snowberry                  5.83     8.45
colnames(HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg_mean)
## [1] "Year"       "Date"       "Location"   "Treated"    "Species"   
## [6] "mean_value" "sd_value"
write.csv(HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg_mean, "data/HAT_cover_OH_MM_sub_treat_OH_2025_wide_agg_mean.csv", row.names = FALSE)

4.3 Function Cover Subset

  • in preparation for creating average mean percentage cover
unique(HAT_cover_OH_MM_sub$Location)
## [1] "Oak Haven" "Matson"    ""
HAT_cover_subset_fun <- function(data, col_name, location, col_name_2, treat, col_name_3, year){
   
  data  <- data %>% dplyr::filter(
    {{col_name}} == location,
    {{col_name_2}} == treat,
    {{col_name_3}} == year)
  
  return(data)
  data_location_treat_year
  
}
HAT_cover_subset_fun_OH_T_2025 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Treated", Year, "2025")
HAT_cover_subset_fun_OH_U_2025 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Untreated", Year, "2025")
HAT_cover_subset_fun_OH_T_2024 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Treated", Year, "2024")
HAT_cover_subset_fun_OH_U_2024 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Untreated", Year, "2024")
HAT_cover_subset_fun_M_T_2025 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Treated", Year, "2025")
HAT_cover_subset_fun_M_U_2025 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Untreated", Year, "2025")
HAT_cover_subset_fun_M_T_2024 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Treated", Year, "2024")
HAT_cover_subset_fun_M_U_2024 <- HAT_cover_subset_fun(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Untreated", Year, "2024")

4.4 Function Cover Subset pivot wide

  • in preparation for creating average mean percentage cover

4.4.1 Populate pivot wide using function Cover Subset pivot wide

HAT_cover_subset_fun_OH_T_2025_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Treated", Year, "2025")
HAT_cover_subset_fun_OH_U_2025_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Untreated", Year, "2025")
HAT_cover_subset_fun_OH_T_2024_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Treated", Year, "2024")

## unable to pivot wide and fill to 0 ## ????????? had to wrangle some duplicate values and quadrat ID
HAT_cover_subset_fun_OH_U_2024_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Oak Haven", Treated, "Untreated", Year, "2024")

HAT_cover_subset_fun_M_T_2025_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Treated", Year, "2025")
HAT_cover_subset_fun_M_U_2025_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Untreated", Year, "2025")
HAT_cover_subset_fun_M_T_2024_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Treated", Year, "2024")


HAT_cover_subset_fun_M_U_2024_wide <- HAT_cover_subset_fun_pivot_wide(HAT_cover_OH_MM_sub, Location, "Matson", Treated, "Untreated", Year, "2024")

4.4.2 Calculate Mean Cover Percentage from pivot wide function results

# gather column names for each data object to paste the UniqueID values into mean calculations 
comma_separated_col_names <- function(data){
  col  <- data

cols <- colnames(col)

comma_separated_col_names <- paste(cols, collapse = ", ")

print(comma_separated_col_names)

}

##### COPY COLUMN SEPARATED NAMES FOR UNIQUE QUADRATS OT REPLACE C() VALUES
# HAT_cover_subset_fun_OH_T_2025_wide
comma_separated_col_names(HAT_cover_subset_fun_OH_T_2025_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3, T_CH_Q3_8.3"
HAT_cover_subset_fun_OH_T_2025_wide_mean <- HAT_cover_subset_fun_OH_T_2025_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3, T_CH_Q3_8.3)), 
            sd_value = sd(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3, T_CH_Q3_8.3))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_OH_U_2025_wide
comma_separated_col_names(HAT_cover_subset_fun_OH_U_2025_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, U_DL_Q1_9, U_DL_Q2_13.3, U_DL_Q3_2.6, U_CH_Q1_9, U_CH_Q2_13.3, U_CH_Q3_2.6"
HAT_cover_subset_fun_OH_U_2025_wide_mean <- HAT_cover_subset_fun_OH_U_2025_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(U_DL_Q1_9, U_DL_Q2_13.3, U_DL_Q3_2.6, U_CH_Q1_9, U_CH_Q2_13.3, U_CH_Q3_2.6)), 
            sd_value = sd(c(U_DL_Q1_9, U_DL_Q2_13.3, U_DL_Q3_2.6, U_CH_Q1_9, U_CH_Q2_13.3, U_CH_Q3_2.6))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_OH_T_2024_wide
comma_separated_col_names(HAT_cover_subset_fun_OH_T_2024_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, T_CL_Q2_3.3, T_CL_Q1_4.3, T_HD_Q1_4.3, T_HD_Q3_8.3, T_HD_Q2_3.3, T_CL_Q3_8.3"
HAT_cover_subset_fun_OH_T_2024_wide_mean <- HAT_cover_subset_fun_OH_T_2024_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(T_CL_Q2_3.3, T_CL_Q1_4.3, T_HD_Q1_4.3, T_HD_Q3_8.3, T_HD_Q2_3.3, T_CL_Q3_8.3)), 
            sd_value = sd(c(T_CL_Q2_3.3, T_CL_Q1_4.3, T_HD_Q1_4.3, T_HD_Q3_8.3, T_HD_Q2_3.3, T_CL_Q3_8.3))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_OH_U_2024_wide
comma_separated_col_names(HAT_cover_subset_fun_OH_U_2024_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, U_CL_Q1_9, U_CL_Q3_2.6, U_CL2_Q3_2.6, U_CL2_Q1_9, U_CL2_Q2_13.3, U_CL_Q2_13.3"
HAT_cover_subset_fun_OH_U_2024_wide_mean <- HAT_cover_subset_fun_OH_U_2024_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(U_CL_Q1_9, U_CL_Q3_2.6, U_CL2_Q3_2.6, U_CL2_Q1_9, U_CL2_Q2_13.3, U_CL_Q2_13.3)), 
            sd_value = sd(c(U_CL_Q1_9, U_CL_Q3_2.6, U_CL2_Q3_2.6, U_CL2_Q1_9, U_CL2_Q2_13.3, U_CL_Q2_13.3))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_M_T_2025_wide
comma_separated_col_names(HAT_cover_subset_fun_M_T_2025_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, T_LJ_Q1_8, T_LJ_Q3_4, T_DH_Q3_8, T_DH_Q1_4, T_LJ_Q2_1, T_DH_Q2_1"
HAT_cover_subset_fun_M_T_2025_wide_mean <- HAT_cover_subset_fun_M_T_2025_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(T_LJ_Q1_8, T_LJ_Q3_4, T_DH_Q3_8, T_DH_Q1_4, T_LJ_Q2_1, T_DH_Q2_1)), 
            sd_value = sd(c(T_LJ_Q1_8, T_LJ_Q3_4, T_DH_Q3_8, T_DH_Q1_4, T_LJ_Q2_1, T_DH_Q2_1))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_M_U_2025_wide
comma_separated_col_names(HAT_cover_subset_fun_M_U_2025_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, U_LJ_Q3_9, U_LJ_Q2_2, U_DH_Q1_2, U_DH_Q2_4, U_DH_Q3_9, U_LJ_Q1_4"
HAT_cover_subset_fun_M_U_2025_wide_mean <- HAT_cover_subset_fun_M_U_2025_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(U_LJ_Q3_9, U_LJ_Q2_2, U_DH_Q1_2, U_DH_Q2_4, U_DH_Q3_9, U_LJ_Q1_4)), 
            sd_value = sd(c(U_LJ_Q3_9, U_LJ_Q2_2, U_DH_Q1_2, U_DH_Q2_4, U_DH_Q3_9, U_LJ_Q1_4))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_M_T_2024_wide
comma_separated_col_names(HAT_cover_subset_fun_M_T_2024_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, T_HCDD_Q1_2, T_HCDD_Q2_5, T_HCDD_Q3_8"
HAT_cover_subset_fun_M_T_2024_wide_mean <- HAT_cover_subset_fun_M_T_2024_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(T_HCDD_Q3_8, T_HCDD_Q1_2, T_HCDD_Q2_5)), 
            sd_value = sd(c(T_HCDD_Q3_8, T_HCDD_Q1_2, T_HCDD_Q2_5))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:
# HAT_cover_subset_fun_OH_U_2025_wide
comma_separated_col_names(HAT_cover_subset_fun_M_U_2024_wide)
## [1] "Date, Year, Location, Treated, YearTreated, Species, Native_or_Invasive, U_HCDD_Q1_3.66, U_HCDD_Q2_5.7, U_HCDD_Q3_7.3"
HAT_cover_subset_fun_M_U_2024_wide_mean <- HAT_cover_subset_fun_M_U_2024_wide %>%
   group_by(Year, Date, Location, Treated, Species, Native_or_Invasive) %>%
  summarise(mean_value = mean(c(U_HCDD_Q1_3.66, U_HCDD_Q2_5.7, U_HCDD_Q3_7.3)), 
            sd_value = sd(c(U_HCDD_Q1_3.66, U_HCDD_Q2_5.7, U_HCDD_Q3_7.3))) %>%  
  mutate_if(is.numeric, round, 2) # round
## `summarise()` has grouped output by 'Year', 'Date', 'Location', 'Treated',
## 'Species'. You can override using the `.groups` argument.
## `mutate_if()` ignored the following grouping variables:

4.4.3 Rbind mean cover data

HAT_cover_mean <- rbind(HAT_cover_subset_fun_OH_T_2025_wide_mean, HAT_cover_subset_fun_OH_U_2025_wide_mean, HAT_cover_subset_fun_OH_T_2024_wide_mean, HAT_cover_subset_fun_OH_U_2024_wide_mean, HAT_cover_subset_fun_M_T_2025_wide_mean, HAT_cover_subset_fun_M_U_2025_wide_mean, HAT_cover_subset_fun_M_T_2024_wide_mean, HAT_cover_subset_fun_M_U_2024_wide_mean)

write.csv(HAT_cover_mean, "data/HAT_cover_mean.csv", row.names = FALSE)

4.5 Report: Species Richness Values

4.5.1 In Oak Haven

  • There are 12 unique native plant species, and 9 invasive Plant species
  • 10 unique native plant species in the Treated, and 9 unique native plant species in the Untreated monitoring locations
  • 7 unique invasive plant species in the Treated, and 6 unique invasive plant species in the Untreated monitoring locations
  • The native plant species are: Menzies larkspur, Oregon grape, Pacific sanicle, camas, delphinium, fawn lily, saxifrage species, shooting star, snowberry, onion, rose, licorice fern
  • The invasive plant species are: Scotch broom, field chickweed, herb robert geranium, shiny geranium, speedwell, bur chervil, common plantain, vetch, chickweed

4.5.2 In Matson

  • There are 10 unique native plant species, and 7 invasive Plant species
  • 5 unique native plant species in the Treated, and 7 unique native plant species in the Untreated monitoring locations
  • 5 unique invasive plant species in the Treated, and 3 unique invasive plant species in the Untreated monitoring locations
  • The native plant species are: camas, oceanspray, Oregon grape, licorice fern, snowberry, trailing blackberry, Pacific sanicle, onion, Garry oak, tall Oregon grape
  • The invasive plant species are: Himalayan blackberry, aster, pickly wall lettuce, English ivy, daphne, Scotch broom, vetch
"- There are `r length(unique(HAT_cover_mean$Species))` unique native plant species, 
and `r length(unique(HAT_cover_mean$Species))` invasive Plant species 
found in both the Treated and Untreated monitoring locations at Oak Haven Park"
"- The **native plant species** are: `r unique(HAT_cover_mean$Species)`  "
"- The **invasive plant species** are: `r unique(HAT_cover_mean$Species)`  "

4.5.3 Species Richness by Treatment

  • this is for both Oak Haven and Matson
length(unique(HAT_cover_mean$Species)) #11
## [1] 40
colnames(HAT_cover_mean)
## [1] "Year"               "Date"               "Location"          
## [4] "Treated"            "Species"            "Native_or_Invasive"
## [7] "mean_value"         "sd_value"
library(ggplot2)
library(magrittr) # required for %>%
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
library(plotly)

# https://ourcodingclub.github.io/tutorials/data-vis-2/
species_counts <- HAT_cover_mean %>%
  dplyr::group_by(Year, Treated, Native_or_Invasive, Location) %>%
  dplyr::summarise(Species_number = length(unique(Species)))
## `summarise()` has grouped output by 'Year', 'Treated', 'Native_or_Invasive'.
## You can override using the `.groups` argument.
write.csv(species_counts, "data/species_counts.csv", row.names = FALSE)
colnames(species_counts) # [1] "Treated" "Native_or_Invasive" "Species_number" 
## [1] "Year"               "Treated"            "Native_or_Invasive"
## [4] "Location"           "Species_number"
# create custom colour-blind-friendly palette
custom_colours_3 <- c("Invasive" = "#fc8d62", 
                    "Native" = "#66c2a5", 
                    "MixedGrass" = "#8da0cb")
# custom_colours_3 <- c("Native" = "#1b9e77", 
#                     "Invasive" = "#d95f02",
#                     "MixedGrass" = "#7570b3")

HAT_cover_mean_sp_rich_treat_plot <- 
  ggplot(species_counts, aes(x = Treated, y = Species_number, fill = Native_or_Invasive)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    scale_fill_manual(values = custom_colours_3) +
        labs(title='Oak Haven and MatsonSpecies Richness by Treatment',
          subtitle='HAT Oak Haven and Matson',
          caption = "Chart by Wendy Anthony \n 2025-12-31", fill = "",
          x = "Treatment", y = "Species Count")

HAT_cover_mean_sp_rich_treat_plot

# ggplotly
  ggplotly(HAT_cover_mean_sp_rich_treat_plot)
# ggsave(filename = paste0("images/oakhaven_2025_sp_rich_treat_plot_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), oakhaven_2025_sp_rich_treat_plot)

4.6 ??? Function Mean Percent Cover

??? this isn’t resulting in any numbers

#   col  <- data %>%
#   select(!(SortID:Native_or_Invasive))
# 
# cols <- colnames(col)
# 
# comma_separated_names <- paste(cols, collapse = ", ")


############################################################
############################################################
HAT_mean_cover_fun <- function(data, col_names) {
   data  <- data %>%
     group_by(Year, Date, Location, Treated, Species) %>%
     summarise(across(c(col_names), sum)) %>%
     # summarise(across(c(T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3), sum)) %>%
  # round
  mutate_if(is.numeric, round, 2)
}

# Error in UseMethod("group_by") :   no applicable method for 'group_by' applied to an object of class "function"

## Error in UseMethod("group_by") : no applicable method for 'group_by' applied to an object of class "character"
############################################################
############################################################









#   col  <- HAT_cover_OH_MM_sub_treat_OH_2025_wide %>%
#   select(!(SortID:Native_or_Invasive))
# 
# cols <- colnames(HAT_cover_OH_MM_sub_treat_OH_2025_wide)
# 
# comma_separated_names <- paste(cols, collapse = ", ")
# comma_separated_names
# # 
#  colnames(HAT_cover_OH_MM_sub_treat_OH_2025_wide)
#  # test <- HAT_mean_cover_fun(HAT_cover_OH_MM_sub_treat_OH_2025_wide)
# # 
#  test <- HAT_mean_cover_fun(HAT_cover_OH_MM_sub_treat_OH_2025_wide, "T_DL_Q1_4.3, T_DL_Q2_3.3, T_DL_Q3_8.3, T_CH_Q3_8.3, T_CH_Q1_4.3, T_CH_Q2_3.3")

5 Plots

5.1 CrewData-2022-2025

5.1.1 Oak Haven Park by Year

str(crew_data_sep_sub_OHP)
## 'data.frame':    86 obs. of  10 variables:
##  $ Year                    : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Work_Site               : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Area_Cleared_m2         : num  540 540 588 588 750 ...
##  $ Biomass_Removed_m3      : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive      : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours              : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer          : chr  "Work" "Work" "Work" "Work" ...
##  $ Date                    : Date, format: "2022-09-07" "2022-09-07" ...
colnames(crew_data_sep_sub_OHP)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
unique(crew_data_sep_sub_OHP$Year) # 2023 2025 2024 2022
## [1] 2022 2023 2024 2025
# Filter by year - need column for year
crew_data_sep_sub_OHP_2025 <- crew_data_sep_sub_OHP[crew_data_sep_sub_OHP$Year == "2025",]
crew_data_sep_sub_OHP_2024 <- crew_data_sep_sub_OHP[crew_data_sep_sub_OHP$Year == "2024",]
crew_data_sep_sub_OHP_2023 <- crew_data_sep_sub_OHP[crew_data_sep_sub_OHP$Year == "2023",]
crew_data_sep_sub_OHP_2022 <- crew_data_sep_sub_OHP[crew_data_sep_sub_OHP$Year == "2022",]

crew_data_sep_sub_OHP_2025_plot <- 
  ggplot(crew_data_sep_sub_OHP_2025, aes(x = Date, y = Crew_Hours, fill = Biomass_Removed_m3)) + 
  #geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  geom_line() +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Oak Haven Park Biomass removed by HAT Crew',
          subtitle='2025',
          caption = "Chart by Wendy Anthony \n 2025-11-29", fill = "Biomass_Removed_m3",
          x = "Work Site", y = "Crew Hours")

crew_data_sep_sub_OHP_2025_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_plot_W̱SÁNEĆ_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_plot)

5.1.2 *** Total Biomass Removed Per Time Investment

  • group and add up total crew hours and biomass removed

5.1.2.1 Hours to Total Biomass Removed Ratio

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio) 
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
crew_data_sep_hr_bio_ratio_by_group_site <- ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, aes(y = Work_Site, x = Labour_Hr_Bio_Ratio, fill = Year)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Ratio of Work Crew Hours to Total Biomass Removed',
          subtitle='HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Year",
          y = "Site", x = "Hours Labour per m3 Biomass Removed") +
  guides(fill = guide_legend(title="Work Site"))
crew_data_sep_hr_bio_ratio_by_group_site

crew_data_sep_hr_bio_ratio_by_group_site_rev <- ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, aes(y = as.factor(Work_Site), x = Labour_Hr_Bio_Ratio, fill = as.factor(Year))) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Ratio of Work Crew Hours to Total Biomass Removed',
          subtitle='HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Year",
          y = "Site", x = "Labour Hours per m3 Biomass Removed") +
  guides(fill = guide_legend(title=""))
crew_data_sep_hr_bio_ratio_by_group_site_rev

5.1.2.2 Total Biomass Removed to Hours Ratio

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio) 
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
crew_data_sep_bio_hr_ratio_by_group_site_rev <- ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, aes(y = as.factor(Work_Site), x = Labour_Bio_Hr_Ratio, fill = as.factor(Year))) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Ratio of Total Biomass Removed to Work Crew Hours',
          subtitle='HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Year",
          y = "Site", x = "m3 Biomass Removed per Labour Hour") +
  guides(fill = guide_legend(title=""))
crew_data_sep_bio_hr_ratio_by_group_site_rev

5.1.3 Biomass of Invasive Species

colnames(crew_data_sep_sub_sum_bio_inv)
## [1] "Work_Site"                "Year"                    
## [3] "Invasive_Species_Cleared" "Data_Change_Assumptions" 
## [5] "Work_Volunteer"           "Biomass_Removed_m3"      
## [7] "Crew_Hours"               "Area_Cleared_m2"
ggplotly(
  ggplot(crew_data_sep_sub_sum_bio_inv, aes(x = reorder(Invasive_Species_Cleared, desc(Invasive_Species_Cleared)), y = Biomass_Removed_m3, fill = as.factor(Year), text = paste("Year:", Year,
                                                          "\nSite:", Work_Site,
                                                          "\nCrew Hours:", Crew_Hours,      
                                                          "\nBiomass Removed m3:", Biomass_Removed_m3,  
                                                          "\nInvasive Species:", Invasive_Species_Cleared,
                                                          "\nArea Cleared m2:", Area_Cleared_m2))) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  coord_flip() + 
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Biomass Removed per Invasive Species',
          subtitle='HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Year",
          x = "Invasive Species", y = "m3 Biomass Removed") +
      theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust = 1, size = 7)), 
    # tooltip = c("x", "fill", "Species", "Site", "sd_value"), 
    tooltip = "text",
  config = (displayModeBar = False) 
  ) %>%
    layout(legend = list(orientation="h",
    xanchor="center",
    x = 0.5,
    # gives some space between x axis label and legend
    y = -0.2
    )
)

5.1.4 Stacked Bar Biomass of Invasive Species

colnames(crew_data_sep_sub_sum_bio_inv)
## [1] "Work_Site"                "Year"                    
## [3] "Invasive_Species_Cleared" "Data_Change_Assumptions" 
## [5] "Work_Volunteer"           "Biomass_Removed_m3"      
## [7] "Crew_Hours"               "Area_Cleared_m2"
ggplotly(
  ggplot(crew_data_sep_sub_sum_bio_inv, aes(x = reorder(Invasive_Species_Cleared, desc(Invasive_Species_Cleared)), y = Biomass_Removed_m3, fill = as.factor(Year), text = paste("Year:", Year,
                                                          "\nSite:", Work_Site,
                                                          "\nCrew Hours:", Crew_Hours,      
                                                          "\nBiomass Removed m3:", Biomass_Removed_m3,  
                                                          "\nInvasive Species:", Invasive_Species_Cleared,
                                                          "\nArea Cleared m2:", Area_Cleared_m2))) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5) +
  coord_flip() + 
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Biomass Removed per Invasive Species',
          subtitle='HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Year",
          x = "Invasive Species", y = "m3 Biomass Removed") +
      theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust = 1, size = 7)), 
    # tooltip = c("x", "fill", "Species", "Site", "sd_value"), 
    tooltip = "text",
  config = (displayModeBar = False) 
  ) %>%
    layout(legend = list(orientation="h",
    xanchor="center",
    x = 0.5,
    # gives some space between x axis label and legend
    y = -0.2
    )
)

5.1.4.1 2025

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio)
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
# [1] "Work_Site"          "Year"               "Biomass_Removed_m3" "Crew_Hours" 

unique(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site)
## [1] "Bear Hill"                "Calypso Woods"           
## [3] "Camas Hill"               "Funk"                    
## [5] "Havenwood Park"           "Matson Conservation Area"
## [7] "Oak Haven Park"           "Purple Sanicle"          
## [9] "Yates"
# Filter by year - need column for year
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2025 <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Year == "2025",]

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2025_plot <- 
  ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2025, aes(x = Crew_Hours, y = Biomass_Removed_m3, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Total Biomass Removed & Work Crew Hours',
          subtitle='2025 HAT Properties',
          # caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2025_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_2025_plotĆ_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_2025_plot)

5.1.4.2 2024

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio)
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
# [1] "Work_Site"          "Year"               "Biomass_Removed_m3" "Crew_Hours" 

unique(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site)
## [1] "Bear Hill"                "Calypso Woods"           
## [3] "Camas Hill"               "Funk"                    
## [5] "Havenwood Park"           "Matson Conservation Area"
## [7] "Oak Haven Park"           "Purple Sanicle"          
## [9] "Yates"
# Filter by year - need column for year
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024 <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Year == "2024",]

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024_plot <- 
  ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024, aes(x = Crew_Hours, y = Biomass_Removed_m3, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Total Biomass Removed & Work Crew Hours',
          subtitle='2024 HAT Properties',
          #caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024_plot_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024_plot)

5.1.4.3 2023

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio)
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
# [1] "Work_Site"          "Year"               "Biomass_Removed_m3" "Crew_Hours" 

unique(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site)
## [1] "Bear Hill"                "Calypso Woods"           
## [3] "Camas Hill"               "Funk"                    
## [5] "Havenwood Park"           "Matson Conservation Area"
## [7] "Oak Haven Park"           "Purple Sanicle"          
## [9] "Yates"
# Filter by year - need column for year
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023 <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Year == "2023",]

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023_plot <- 
  ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023, aes(x = Crew_Hours, y = Biomass_Removed_m3, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Total Biomass Removed & Work Crew Hours',
          subtitle='2023 HAT Properties',
          #caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023_plot_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023_plot)

5.1.4.4 2022

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio)
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
# [1] "Work_Site"          "Year"               "Biomass_Removed_m3" "Crew_Hours" 

unique(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Work_Site)
## [1] "Bear Hill"                "Calypso Woods"           
## [3] "Camas Hill"               "Funk"                    
## [5] "Havenwood Park"           "Matson Conservation Area"
## [7] "Oak Haven Park"           "Purple Sanicle"          
## [9] "Yates"
# Filter by year - need column for year
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022 <- crew_data_sep_sub_sum_by_group_site_hr_bio_ratio[crew_data_sep_sub_sum_by_group_site_hr_bio_ratio$Year == "2022",]

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022_plot <- 
  ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022, aes(x = Crew_Hours, y = Biomass_Removed_m3, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Total Biomass Removed & Work Crew Hours',
          subtitle='2022 HAT Properties',
          #caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022)

5.1.4.5 *** Facet wrap 2022-2025

colnames(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio)
## [1] "Work_Site"           "Year"                "Work_Volunteer"     
## [4] "Biomass_Removed_m3"  "Crew_Hours"          "Area_Cleared_m2"    
## [7] "Labour_Hr_Bio_Ratio" "Labour_Bio_Hr_Ratio" "Area_Bio_Ratio"
# [1] "Work_Site"          "Year"               "Biomass_Removed_m3" "Crew_Hours" 

# unique(crew_data_sep_sub_sum_by_group_site$Work_Site)
# Filter by year - need column for year
# crew_data_sep_sub_sum_by_group_site_2022 <- crew_data_sep_sub_sum_by_group_site[crew_data_sep_sub_sum_by_group_site$Year == "2022",]

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_plot_facetwrap_2022_2025 <- 
  ggplot(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, aes(x = Crew_Hours, y = Biomass_Removed_m3, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 5, position = "dodge") +
  facet_wrap(~Year) +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Total Biomass Removed & Work Crew Hours',
          subtitle='HAT Properties 2022-2025',
          #caption = "Chart by Wendy Anthony \n 2025-11-29", 
          fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))

crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_plot_facetwrap_2022_2025

# ggsave(filename = paste0("images/crew_data_sep_sub_sum_by_group_site_plot_facetwrap_2022_2025_plot_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_sum_by_group_site_plot_facetwrap_2022_2025)

5.1.4.6 **** FUNCTION for Total Biomass and Year WORKED!!!

barchart_work_site_biomass_year_function <- function(data, filter_column, filter_value, plot_subtitle = "Filtered Plot", plot_ojbect){
  filtered_data <- data %>%
     filter({{filter_column}} == filter_value)
  
plot_ojbect <- ggplot(filtered_data, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
#  ggplot(crew_data_sep_sub_sum_by_group_site_2025, aes(x = Biomass_Removed_m3, y = Crew_Hours, fill = Work_Site)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 0, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title = 'Total Biomass Removed and HAT Work Crew Hours',
          subtitle = plot_subtitle,
          caption = "Chart by Wendy Anthony \n 2025-11-29", fill = "Work_Site",
          x = "Biomass Removed (m3)", y = "Crew Hours") +
  guides(fill = guide_legend(title="Work Site"))
print(plot_ojbect)
return(filtered_data)
# ?? print(barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site))
}

# this returns a list
# biomass_2025 <- barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site, Year, "2025", "2025", "biomass_2025")
barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, Year, "2025", "2025", "biomass_2025")
## Warning: `position_dodge()` requires non-overlapping x intervals

## # A tibble: 7 × 9
## # Groups:   Work_Site, Year [7]
##   Work_Site    Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##   <chr>       <int> <chr>                       <dbl>      <dbl>           <dbl>
## 1 Calypso Wo…  2025 Work                          3         30              595.
## 2 Camas Hill   2025 Work                         14.7      188.            4986.
## 3 Funk         2025 Work                          3         22.5           5345.
## 4 Matson Con…  2025 Work                          5.6      266.            1300.
## 5 Oak Haven …  2025 Work                          4.2      298.            1035.
## 6 Purple San…  2025 Work                          4        112.            1038.
## 7 Yates        2025 Work                         20.6      346.           12137.
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, Year, "2024", "2024", "biomass_2024")

## # A tibble: 8 × 9
## # Groups:   Work_Site, Year [8]
##   Work_Site    Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##   <chr>       <int> <chr>                       <dbl>      <dbl>           <dbl>
## 1 Bear Hill    2024 Work                         33          68             729 
## 2 Camas Hill   2024 Work                          8.8       120             842.
## 3 Funk         2024 Work                          4          30            3549 
## 4 Havenwood …  2024 Work                          2.5        30             342 
## 5 Matson Con…  2024 Work                         11.3       490.           3342.
## 6 Oak Haven …  2024 Work                          6.5       282            1041 
## 7 Purple San…  2024 Work                          5.7       176.            656.
## 8 Yates        2024 Work                         27         195           15621 
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, Year, "2023", "2023", "biomass_2023")

## # A tibble: 6 × 9
## # Groups:   Work_Site, Year [6]
##   Work_Site    Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##   <chr>       <int> <chr>                       <dbl>      <dbl>           <dbl>
## 1 Camas Hill   2023 Work                         59        258             2800 
## 2 Funk         2023 Work                          5         34.5           1513 
## 3 Havenwood …  2023 Work                         15         75              200 
## 4 Matson Con…  2023 Work                         44.9     1262             1531.
## 5 Oak Haven …  2023 Work                         37.1      628.            2880.
## 6 Yates        2023 Work                         11.9      413            47222 
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio, Year, "2022", "2022", "biomass_2022")

## # A tibble: 2 × 9
## # Groups:   Work_Site, Year [2]
##   Work_Site    Year Work_Volunteer Biomass_Removed_m3 Crew_Hours Area_Cleared_m2
##   <chr>       <int> <chr>                       <dbl>      <dbl>           <dbl>
## 1 Matson Con…  2022 Work                          9.1       270             335 
## 2 Oak Haven …  2022 Work                        105         952.          17355.
## # ℹ 3 more variables: Labour_Hr_Bio_Ratio <dbl>, Labour_Bio_Hr_Ratio <dbl>,
## #   Area_Bio_Ratio <dbl>
# 
# # barchart_work_site_biomass_year <- function(data, filter_column, filter_value, x_var, y_var, plot_title = "Filtered Plot"){
# # # unique(crew_data_sep_sub_sum_by_group_site$Work_Site)
# # 
# # # Filter by year - need column for year
# #   filtered_data <- data %>%
# #     filter({{filter_column}} == filter_value)
# # 
# #   p <- ggplot(filtered_data, aes(x = .data[[x_var]], y = .data[[y_var]])) +
# #     geom_bar(stat = "identity", width = 5, position = "dodge") +
# #     labs(title = plot_title,
# #          x = x_var,
# #          y = y_var) +
# #     theme_minimal()
# # 
# #   return(p)
# # 
# #  }
# 
# ### ERROR IN FILTER
# # In argument: `crew_data_sep_sub_sum_by_group_site$Year == filter_value`.
# # ℹ In group 1: `Work_Site = "Bear Hill"`.
# # Caused by error:
# # ! `..1` must be of size 1, not size 23.
# # colnames(crew_data_sep_sub_sum_by_group_site)
# # unique(crew_data_sep_sub_sum_by_group_site$Work_Site)
# # barchart_work_site_biomass_year(crew_data_sep_sub_sum_by_group_site, crew_data_sep_sub_sum_by_group_site$Work_Site, "2024", crew_data_sep_sub_sum_by_group_site$Biomass_Removed_m3, crew_data_sep_sub_sum_by_group_site$Crew_Hours, "Total Biomass Removed and Work Crew Hours")
# 
# # barchart_work_site_biomass_year(crew_data_sep_sub_sum_by_group_site, crew_data_sep_sub_sum_by_group_site$Work_Site, "Oak Haven Park", crew_data_sep_sub_sum_by_group_site$Biomass_Removed_m3, crew_data_sep_sub_sum_by_group_site$Crew_Hours, "Total Biomass Removed and Work Crew Hours at Oak Haven Park")

5.1.5 Arrange charts together

  • can’t arrange charts created with function
  • need to use same x & y axis limits so charts are comparable
  • ??? can I share Title and legend???
library(cowplot)
## 
## Attaching package: 'cowplot'
## The following object is masked from 'package:lubridate':
## 
##     stamp
plot_grid(crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2025_plot, crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2024_plot, 
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2023_plot,
crew_data_sep_sub_sum_by_group_site_hr_bio_ratio_2022, ncol = 4)
## Warning in as_grob.default(plot): Cannot convert object of class
## grouped_dftbl_dftbldata.frame into a grob.

# , labels = c("2025", "2024", "2023", "2022")


# Warning in as_grob.default(plot) :
#  Cannot convert object of class grouped_dftbl_dftbldata.frame into a grob.
# plot_grid(barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site, Year, "2025", "2025", "biomass_2025"), barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site, Year, "2024", "2024", "biomass_2024"), barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site, Year, "2023", "2023", "biomass_2023"), barchart_work_site_biomass_year_function(crew_data_sep_sub_sum_by_group_site, Year, "2022", "2022", "biomass_2022"), ncol = 2)

5.1.6 Biomass Removed

str(crew_data_sep_sub)
## 'data.frame':    238 obs. of  10 variables:
##  $ Year                    : int  2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
##  $ Work_Site               : chr  "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" "Oak Haven Park" ...
##  $ Area_Cleared_m2         : num  540 540 588 588 750 ...
##  $ Biomass_Removed_m3      : num  1.5 1.5 1.5 1.5 2 1.5 1.5 1.5 1.5 2 ...
##  $ Data_Change_Assumptions : chr  "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" "estimate 1/2 of biomass, area, and work hours" ...
##  $ Invasive_Species_Cleared: chr  "daphne" "Scotch broom" "daphne" "Scotch broom" ...
##  $ Native_or_Invasive      : chr  "Invasive" "Invasive" "Invasive" "Invasive" ...
##  $ Crew_Hours              : num  22.5 22.5 30 30 22.5 22.5 22.5 22.5 22.5 22.5 ...
##  $ Work_Volunteer          : chr  "Work" "Work" "Work" "Work" ...
##  $ Date                    : Date, format: "2022-09-07" "2022-09-07" ...
colnames(crew_data_sep_sub)
##  [1] "Year"                     "Work_Site"               
##  [3] "Area_Cleared_m2"          "Biomass_Removed_m3"      
##  [5] "Data_Change_Assumptions"  "Invasive_Species_Cleared"
##  [7] "Native_or_Invasive"       "Crew_Hours"              
##  [9] "Work_Volunteer"           "Date"
# create custom colour-blind-friendly palette
custom_colours_3 <- c("Invasive" = "#fc8d62", 
                    "Native" = "#66c2a5", 
                    "MixedGrass" = "#8da0cb")
# custom_colours_3 <- c("Native" = "#1b9e77", 
#                     "Invasive" = "#d95f02",
#                     "MixedGrass" = "#7570b3")

crew_data_sep_sub_plot <- 
  ggplot(crew_data_sep_sub, aes(x = Work_Site, y = Crew_Hours, fill = Biomass_Removed_m3)) + 
  geom_bar(stat = "identity", width = 0.5, position = "dodge") +
  theme_minimal() + #get rid of grey background and tick marks
  theme(legend.position ="bottom") + 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = 7)) +
    #scale_fill_manual(values = custom_colours_3) +
        labs(title='Biomass removed',
          subtitle='2025 HAT Properties',
          caption = "Chart by Wendy Anthony \n 2025-11-29", fill = "Biomass_Removed_m3",
          x = "Work Site", y = "Crew Hours")

crew_data_sep_sub_plot

# ggsave(filename = paste0("images/crew_data_sep_sub_plot_W̱SÁNEĆ_", format(Sys.time(), "%Y-%m-%d_%H.%M"),".png"), crew_data_sep_sub_plot)

5.2 Cover Data Plots

6 Leaflet Maps

6.1 3-Site Map

# library(dplyr)
library(leaflet)

# Title control
# (Shackelford, et al., 2024). Global Restore Project. Restoration Futures Lab at the University of Victoria
     title <- '<p style="text-align: center; height: 18px; "><img src="https://images.squarespace-cdn.com/content/v1/5e3c5b7e5460c55405a6d4d6/a8c2fb30-96fd-4042-925f-e76c7040dce6/Black+Logo+2.png?format=5w"><span style="font-size:9px;font-weight:bold; background-color: rgba(255, 255, 255, 0.9;");>GOE Monitoring Covenant Sites Map</span></p>'
     
    # https://rstudio.github.io/leaflet/articles/markers.html
    # Create a palette that maps factor levels to colors
    #####
 # #d95f02 orange; #7570b3 purple; #1b9e77 
     # https://colorbrewer2.org/#type=qualitative&scheme=Dark2&n=5
    pal <- colorFactor(c("#1b9e77", "#7570b3", "#d95f02", "#e7298a", "#66a61e"), domain = c("Central Saanich", "Colwood", "Esquimalt", "Saanich", "Metchosin"))
HAT_sites_map  <-  leaflet(HAT_sites) %>%
      addProviderTiles("Esri.WorldImagery") %>%
      addCircleMarkers(
        ~ Lng, ~ Lat,
        #
        color = ~pal(Municipality),
        # color = "yellow",
        weight = 1, # size of circle border
        stroke = TRUE, fillOpacity = 1, #fillOpacity = 0.5
        radius = 5,
        # OM_site_data$
        # "<b>Global Restore Project GOE Monitoring Sites</b>", "<br>", "<i>(Shackelford, et. al., 2005-2022)</i>", "<br><br>",
        popup = paste0(
        "<img src = 'https://images.squarespace-cdn.com/content/v1/5e3c5b7e5460c55405a6d4d6/a8c2fb30-96fd-4042-925f-e76c7040dce6/Black+Logo+2.png?format=5w'>",  "<br>","<br>",
          "<b>Site:</b> ", "<b>", HAT_sites$Site, "</b>",  "<br>",
          "<b>Municipality:</b> ", HAT_sites$Municipality, "<br>",
          "<b>Size:</b> ", HAT_sites$Size_ha, " (ha)", "<br>",
          "<b>First Nations:</b> ", HAT_sites$FirstNations, "<br>",
          # "<b>Project id:</b> ", HAT_sites$ID, "<br>",
          "<b>HAT Status:</b> ", HAT_sites$HAT_Status, "<br>",
          "<b>Co-Covenant:</b> ", HAT_sites$Co_Covenant, " (", HAT_sites$Date, ")", "<br>",
          "<b>Ecosystems:</b> ", HAT_sites$Ecosystems, "<br>",
          "<b>Volunteer Stewardship:</b> ", HAT_sites$Volunteer_Stewardship, "<br>"
          ))  %>%
      addLegend("bottomright", pal = pal, values = HAT_sites$Municipality, title = "Municipality") %>%

      setView(-123.44799, 48.52919, 11) %>%
      # add controls
      #  addMiniMap(width = 150, height = 150, zoomLevelOffset = -4) %>%
      addControl(title, position = "topright")

# Display map
HAT_sites_map
# Save map
saveWidget(HAT_sites_map, "output/HAT_site_map.html")

7 Mermaid Flowchart

7.1 v1 Original

library(DiagrammeR)
# colors from https://colorbrewer2.org/#type=diverging&scheme=BrBG&n=8
# DiagrammeR("
mermaid("
graph TB
 A1{HAT} --> A[Field Data Collection]
 
 A -->B[Data Entry & Formatting]
 B--create data files--> B1{Shared Data}

 B1 -- import to -->C1(Excel)
 C1 -- save as .csv -->C(RStudio)
C1 -- explore data -->C(RStudio)

C(RStudio)-- wrangle data-->E1{Vegetation Cover}
C-- wrangle data-->F1{Restoration Crew Work}
C-- wrangle data-->F2{Volunteer Work}
E1-->E[Clean & Tidy Species Data]
F1-->F[Clean Labour & Biomass Data]
F2-->F
E--calculate-->G[Calculate: Species Richness]
E--calculate-->H[Calculate: % Native vs Invasive Cover]
F--calculate-->I[Calculate: Efficiency - Hours per cubic meter Biomass]

G--plot-->J[Plot: Biodiversity Change Over Time]
H--plot-->K[Plot: Stacked Bar of Community Composition]
I--plot-->L[Plot: Cost/Effort Analysis]
M[Final Reports & Adaptive Management]

J--include in-->M
K--include in-->M
L--include in-->M
    
 style A1 fill:#bf812d, stroke:#01665e
 style A fill:
 style B fill:
 style B1 fill:#80cdc1
 style C fill:#E5E25F, stroke:#333, stroke-width:2px  
 style C1 fill:#E5E25F, stroke:#333, stroke-width:2px  

 style E fill:
 style F fill:
 style E1 fill:#80cdc1
 style F1 fill:#80cdc1
 style F2 fill:#80cdc1
 style G fill:#fff9c4, stroke:#fbc02d,stroke-width:2px
 style H fill:#fff9c4, stroke:#fbc02d,stroke-width:2px
 style I fill:#fff9c4, stroke:#fbc02d,stroke-width:2px
 style J fill:#E5E25F, stroke:#333, stroke-width:2px  
 style K fill:#E5E25F, stroke:#333, stroke-width:2px  
 style L fill:#E5E25F, stroke:#333, stroke-width:2px  
 style M fill:#bf812d, stroke:#333, stroke-width:3px  
")
# red style E fill:#cf1d2f 
# grey style G fill:#9AA
# blue with dark blue border style H fill:#e1f5fe,stroke:#01579b,stroke-width:2px
# yellow with dark yellow border style I fill:#fff9c4,stroke:#fbc02d,stroke-width:2px
# gold with blue outline style K fill:#E5E25F, stroke:#333, stroke-width:2px  

#  B1 -- data sent to -->A3[Wendy]

7.2 v2 Arranged by Subgroups

can’t seem to change ugly default yellow background

mermaid("
 
graph TD

subgraph HAT DATA CREATION
  A[Field Data Collection]-->B[Data Entry & Formatting & File Creation]
  B-->B1{Shared Data}
end


subgraph DATA EXPLORATION
    C1(Excel)
    C1-- save as .csv -->C(RStudio)
    C1-- explore data -->C(RStudio)
end

subgraph COVER DATA
     E1{Vegetation Cover}-->E[Clean & Tidy Species Data]
     E--calculate-->G[Species Richness]
     E--calculate-->H[% Native vs Invasive Cover]
     E--calculate-->H1[% Treated vs Untreated]        
     G--plot-->J[Biodiversity Change Over Time]
     H--plot-->K[Stacked Bar of Community Composition]
     H1--plot-->K1[Stacked Bar of Treatment Regimes]
end

subgraph CREW DATA
     F1{Restoration Crew Work}-->F[Clean Labour & Biomass Data]
     F--calculate-->I[Efficiency - Hours per cubic meter Biomass]
     F--calculate-->II3[cubic meter Biomass per Species]
     I--plot-->L[Cost/Effort Analysis]
     II3--plot-->II[Biomass Removed per Species]
end

subgraph VOLUNTEER DATA
     F2{Volunteer Work}-->F3[Clean Labour & Biomass Data]
     F3--calculate-->I2[Efficiency - Hours per cubic meter Biomass]
     F3--calculate-->II2[cubic meter Biomass per Species]
     I2--plot-->L2[Cost/Effort Analysis]
     II2--plot-->III[Biomass Removed per Species]
end
 
subgraph DATA VISUALIZATION
     DV[Visualizations to Assist Management Decision Making]
end

subgraph INTERACTIVE DATA VIZ TOOL
     M[Interactive Filter Selection]-- in -->M1[Shiny]
     M-- in -->M2[HTML]
end

subgraph FINAL REPORT & PRESENTATION
     N[Report]-->NP[RNS Publication]
     N1[Presentation]-->HAT[HAT]
end
 
  B1-- import to -->C1
    C-- wrangles -->E1
    C-- wrangles -->F1
    C-- wrangles -->F2
    J-->DV
    K-->DV
    K1-->DV
    L-->DV
    L2-->DV
    DV--include in-->M
    DV--include in-->N
    
 style B1 fill:#bf812d, stroke:#01665e
 style E1 fill:#bf812d, stroke:#01665e
 style F1 fill:#bf812d, stroke:#01665e
 style F2 fill:#bf812d, stroke:#01665e
 style G fill:#80cdc1
 style H fill:#80cdc1
 style H1 fill:#80cdc1
 style I fill:#80cdc1
 style II3 fill:#80cdc1
 style I2 fill:#80cdc1
 style II2 fill:#80cdc1

 ")

7.3 Data Flow

mermaid("
graph TB

")

7.3.1 Dataset Workflow

mermaid("
graph TD
C[Crew Data] 
CV[Cover Data]
S[Site Data] 
V[Volunteer Data] 

S --> M(Map)
M --> PU(Data Popups)

C --> TIV(Top Inv Variance)
C --> TIS(Top Inv Site)

C --> DH(Crew Daily hours) 
C --> DB(Crew Daily biomass) 

V --> VB(Vol Daily biomass) 
V --> VH(Vol Daily hours) 

DH --> SPD(Scatter Plots)
DB --> DPD(Density plots)
TIV --> BXV(Box Plots)
TIS --> BRS(Bar Plots)

VH --> SPV(Scatter Plots)
VB --> DPV(Density plots)

C --> SH(Summary hours) 
C --> SB(Summary biomass) 

SH --> BRSH(Bar Plots)
SB --> BRSB(Bar Plots)

CV --> MC(% Mean Cover)
CV --> SR(Species Richness)

 MC --> BRMC(Bar Plots)
SR --> BRSR(Bar Plots)
")

7.3.2 Filter Workflow

mermaid("
graph TD


FCD[Filter Crew Daily]
FCSD[Filter Crew Summary]
FCDD[Filter Crew Date]
FCSD[Filter Crew Summary]
FCSRD[Filter Species Richness]
FCVD[Filter Cover]
FSD[Filter Site]

FCD --> SPD
FCD --> DPD
FCD --> DH
FCD --> DB
")

7.3.3 Crew Data Daily Workflow

7.3.3.1 Original Data

mermaid("
graph TD
CDOX[HATRestorationCrewData.xlsx] --> CDX[HATRestorationCrewData-2022-2025.xlsx]
CDX --> CDSpX[HATRestorationCrewData-2022-2025-sepsp.xlsx]
CDSpX --> CDSpC[HATRestorationCrewData-2022-2025-sepsp.csv]
")

7.3.3.2 Separate Species & Subset Columns

separate Day Month; month to number; new date col; paste Year-Month-Day; as.Date; rename columns

mermaid("
graph TD
CDSpC[HATRestorationCrewData-2022-2025-sepsp.csv] --> CD(crew_data)
CD--separate Day Month & month to number & new date col & paste Year-Month-Day & as.Date & rename columns--> CDsep(crew_data_sep)
CDsep --> SC[subset columns]
SC --> CDsepsub[crew_data_sep_sub]
CDsepsub --> SA1(save as)
SA1 --> CDsepsubC[crew_data_sep_sub.csv]
")

7.3.3.3 Summarize Sums of Biomass Removed & Crew Hours

mermaid("
graph TD
CDsepsubC[crew_data_sep_sub.csv] --> Pr1{Sums of Biomass_Removed & Crew_Hours}
Pr1 --> CDsepsubbio(crew_data_sep_sub_sum_bio_inv)
CDsepsubbio --> SA2(save as)
CDsepsubbio --> CDv1{Create dataviz}
CDv1 --> DV[Biomass of Invasive Species per year]
SA2 --> CDsepsubbioC[crew_data_sep_sub_sum_bio_inv.csv]
")

7.3.3.4 Webfilter

Shorten Site Names: Matson, Oak Haven, Havenwood

mermaid("
graph TD
CDsepsubbioC[crew_data_sep_sub_sum_bio_inv.csv] --> Pr3{rename to Site with Shorter Names & rearrange column order}
Pr3 --> CDsepsubbioR(crew_data_sep_sub_sum_bio_inv_rename_site)
")
7.3.3.4.1 Shared Data Top5
mermaid("
graph TD
CDsepsubbioR[crew_data_sep_sub_sum_bio_inv_rename_site] --> PF{Filter for top 5 Invasives by name}
 PF --> T5[crew_data_sep_sub_sum_bio_inv_top5]
 T5 --> SDT5(SharedData Top5)
 SDT5 --> T5IS>sd_crew_data_sep_sub_sum_bio_inv_top5]
 T5IS --> T5ISTb{Top Invasive Site Tab}
 T5ISTb --> E1[END]
 ")


8 Session info

# to document specific packages used to run script
sessionInfo()
## R version 4.2.1 (2022-06-23)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Mojave 10.14.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] DiagrammeR_1.0.9  leaflet_2.1.1     cowplot_1.1.1     magrittr_2.0.3   
##  [5] gridExtra_2.3     htmlwidgets_1.5.4 plotly_4.10.1     lubridate_1.9.3  
##  [9] forcats_1.0.0     stringr_1.5.2     dplyr_1.1.4       purrr_1.0.2      
## [13] readr_2.1.4       tidyr_1.3.0       tibble_3.2.1      ggplot2_3.4.0    
## [17] tidyverse_2.0.0  
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_1.2.0        xfun_0.41               bslib_0.4.0            
##  [4] leaflet.providers_1.9.0 vctrs_0.6.5             generics_0.1.3         
##  [7] htmltools_0.5.3         viridisLite_0.4.1       yaml_2.3.5             
## [10] utf8_1.2.2              rlang_1.1.6             jquerylib_0.1.4        
## [13] pillar_1.11.1           glue_1.6.2              withr_2.5.0            
## [16] RColorBrewer_1.1-3      lifecycle_1.0.3         gtable_0.3.6           
## [19] visNetwork_2.1.2        evaluate_0.17           labeling_0.4.2         
## [22] knitr_1.40              tzdb_0.3.0              fastmap_1.1.0          
## [25] crosstalk_1.2.0         highr_0.9               scales_1.4.0           
## [28] cachem_1.0.6            jsonlite_1.8.8          farver_2.1.1           
## [31] hms_1.1.2               digest_0.6.30           stringi_1.7.8          
## [34] grid_4.2.1              cli_3.6.5               tools_4.2.1            
## [37] sass_0.4.2              lazyeval_0.2.2          dichromat_2.0-0.1      
## [40] pkgconfig_2.0.3         ellipsis_0.3.2          data.table_1.14.2      
## [43] timechange_0.2.0        rmarkdown_2.17          httr_1.4.4             
## [46] rstudioapi_0.14         R6_2.5.1                compiler_4.2.1