Modified 2026-01-26 @ 16:40
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
# 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
#################################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#################################
# 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" ...
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))# 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" ...
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)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)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",]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"
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)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)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",]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)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",]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",]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"
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)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")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")# 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:
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)"- 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)` "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)??? 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")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)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_sitecrew_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_revcolnames(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_revcolnames(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
)
)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
)
)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)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)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)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)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)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")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)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)# 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")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]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
")mermaid("
graph TB
")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)
")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
")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]
")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]
")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]
")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)
")# 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