library(tidyverse)
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── 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(readxl)
# Loading biodiversity dataset from Uppsala site
uppsala <- read_excel("/Users/uwu/Documents/Rstudio/Transect_Data_Set/europe/UPPSALA.xls")
## New names:
## • `voucher` -> `voucher...5`
## • `voucher` -> `voucher...6`
## • `voucher` -> `voucher...7`
## • `voucher` -> `voucher...8`
## • `voucher` -> `voucher...9`
## • `voucher` -> `voucher...10`
## • `voucher` -> `voucher...11`
## • `voucher` -> `voucher...12`
## • `Stemdbh` -> `Stemdbh...15`
## • `Stemdbh` -> `Stemdbh...16`
## • `Stemdbh` -> `Stemdbh...17`
## • `Stemdbh` -> `Stemdbh...18`
## • `Stemdbh` -> `Stemdbh...19`
## • `Stemdbh` -> `Stemdbh...20`
## • `Stemdbh` -> `Stemdbh...21`
## • `Stemdbh` -> `Stemdbh...22`
## • `Stemdbh` -> `Stemdbh...23`
## • `Stemdbh` -> `Stemdbh...24`
## • `Stemdbh` -> `Stemdbh...25`
# Checking column names
names(uppsala)
## [1] "Line" "Family" "Genus" "Species" "voucher...5"
## [6] "voucher...6" "voucher...7" "voucher...8" "voucher...9" "voucher...10"
## [11] "voucher...11" "voucher...12" "Liana" "N(Ind.)" "Stemdbh...15"
## [16] "Stemdbh...16" "Stemdbh...17" "Stemdbh...18" "Stemdbh...19" "Stemdbh...20"
## [21] "Stemdbh...21" "Stemdbh...22" "Stemdbh...23" "Stemdbh...24" "Stemdbh...25"
# reading in second site
cuevas<- read_excel("/Users/uwu/Documents/Rstudio/Transect_Data_Set/samerica/CUEVAS.xls")
## New names:
## • `voucher` -> `voucher...8`
## • `voucher` -> `voucher...9`
## • `voucher` -> `voucher...10`
## • `voucher` -> `voucher...11`
## • `voucher` -> `voucher...12`
## • `STEMDBH` -> `STEMDBH...15`
## • `STEMDBH` -> `STEMDBH...16`
## • `STEMDBH` -> `STEMDBH...17`
## • `STEMDBH` -> `STEMDBH...18`
## • `STEMDBH` -> `STEMDBH...19`
## • `STEMDBH` -> `STEMDBH...20`
## • `STEMDBH` -> `STEMDBH...21`
## • `STEMDBH` -> `STEMDBH...22`
## • `STEMDBH` -> `STEMDBH...23`
# checking column names and header
names(cuevas)
## [1] "Line" "Family" "Genus" "species" "voucher1"
## [6] "voucher2" "voucher3" "voucher...8" "voucher...9" "voucher...10"
## [11] "voucher...11" "voucher...12" "LIANA" "N(IND)" "STEMDBH...15"
## [16] "STEMDBH...16" "STEMDBH...17" "STEMDBH...18" "STEMDBH...19" "STEMDBH...20"
## [21] "STEMDBH...21" "STEMDBH...22" "STEMDBH...23"
head(cuevas)
## # A tibble: 6 × 23
## Line Family Genus species voucher1 voucher2 voucher3 voucher...8 voucher...9
## <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <lgl> <lgl>
## 1 1 ACTINI… Saur… M1 75997 <NA> NA NA NA
## 2 3 ANNONA… M1 M1 76025 <NA> NA NA NA
## 3 1 ARACEAE Anth… M1 75990 76064A NA NA NA
## 4 4 ARACEAE Anth… M1 75990 76064A NA NA NA
## 5 7 ARACEAE Anth… M1 75990 76064A NA NA NA
## 6 8 ARACEAE Anth… M1 75990 76064A NA NA NA
## # ℹ 14 more variables: voucher...10 <lgl>, voucher...11 <lgl>,
## # voucher...12 <lgl>, LIANA <chr>, `N(IND)` <dbl>, STEMDBH...15 <dbl>,
## # STEMDBH...16 <dbl>, STEMDBH...17 <dbl>, STEMDBH...18 <dbl>,
## # STEMDBH...19 <chr>, STEMDBH...20 <dbl>, STEMDBH...21 <chr>,
## # STEMDBH...22 <chr>, STEMDBH...23 <chr>
# adding site labels
uppsala$Line <- as.numeric(uppsala$Line)
cuevas$Line <- as.numeric(cuevas$Line)
uppsala$site <- "Uppsala"
cuevas$site <- "Cuevas"
# renaming species to match Uppsala dataset
cuevas <- cuevas %>%
rename(
Species = species
)
# combining datasets
biodiversity <- bind_rows(uppsala, cuevas)
# viewing combined dataset
glimpse(biodiversity)
## Rows: 301
## Columns: 40
## $ Line <dbl> 7, 1, 10, 2, 3, 4, 5, 6, 9, 5, 7, 3, 1, 10, 2, 3, 4, 6, 7…
## $ Family <chr> "ACERACEAE", "BETULACEAE", "BETULACEAE", "BETULACEAE", "B…
## $ Genus <chr> "ACER", "BETULA", "BETULA", "BETULA", "BETULA", "BETULA",…
## $ Species <chr> "PLATANOIDES", "PENDULA", "PENDULA", "PENDULA", "PENDULA"…
## $ voucher...5 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...6 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...7 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...8 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...9 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...10 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...11 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher...12 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Liana <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ `N(Ind.)` <dbl> 1, 5, 3, 1, 3, 1, 3, 2, 5, 1, 1, 1, 2, 2, 5, 2, 3, 2, 2, …
## $ Stemdbh...15 <dbl> 3, 8, 5, 5, 4, 28, 12, 29, 27, 4, 4, 50, 5, 6, 18, 37, 6,…
## $ Stemdbh...16 <dbl> NA, 8, 11, NA, 14, NA, 3, 32, 6, 5, NA, NA, 6, 6, 16, 11,…
## $ Stemdbh...17 <dbl> NA, 6, 4, NA, 11, NA, 8, NA, 6, 5, NA, NA, NA, NA, 6, NA,…
## $ Stemdbh...18 <dbl> NA, 5, NA, NA, NA, NA, NA, NA, 6, 4, NA, NA, NA, NA, 6, N…
## $ Stemdbh...19 <dbl> NA, 4, NA, NA, NA, NA, NA, NA, 5, 5, NA, NA, NA, NA, 14, …
## $ Stemdbh...20 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA, NA, NA…
## $ Stemdbh...21 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA, NA, NA…
## $ Stemdbh...22 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 4, NA, NA, NA, NA, NA…
## $ Stemdbh...23 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA, NA, NA…
## $ Stemdbh...24 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 4, NA, NA, NA, NA, NA…
## $ Stemdbh...25 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 3, NA, NA, NA, NA, NA…
## $ site <chr> "Uppsala", "Uppsala", "Uppsala", "Uppsala", "Uppsala", "U…
## $ voucher1 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher2 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ voucher3 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ LIANA <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ `N(IND)` <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...15 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...16 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...17 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...18 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...19 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...20 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...21 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...22 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ STEMDBH...23 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
# calculating species richness by site and transect
species_richness <- biodiversity %>%
filter(!is.na(Species)) %>%
group_by(site, Line) %>%
summarise(
richness = n_distinct(Species)
)
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by site and Line.
## ℹ Output is grouped by site.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(site, Line))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
# viewing richness table
species_richness
## # A tibble: 21 × 3
## # Groups: site [2]
## site Line richness
## <chr> <dbl> <int>
## 1 Cuevas 1 9
## 2 Cuevas 2 11
## 3 Cuevas 3 11
## 4 Cuevas 4 9
## 5 Cuevas 5 7
## 6 Cuevas 6 14
## 7 Cuevas 7 11
## 8 Cuevas 8 10
## 9 Cuevas 9 12
## 10 Cuevas 10 12
## # ℹ 11 more rows
# comparing species richness between sites
ggplot(species_richness,
aes(x = site,
y = richness,
fill = site)) +
geom_violin(alpha = 0.7) +
geom_boxplot(width = 0.1) +
labs(
title = "Species Richness Site Comparison",
x = "Site",
y = "Species Richness"
) +
theme_bw()
# calculating the Shannon index
shannon_index <- biodiversity %>%
filter(!is.na(Species), !is.na(Line)) %>%
group_by(site, Line, Species) %>%
summarise(count = n(), .groups = "drop") %>%
group_by(site, Line) %>%
mutate(
proportion = count/ sum(count)
) %>%
summarise(
shannon = -sum(proportion * log(proportion)) # calculating shannon index
)
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by site and Line.
## ℹ Output is grouped by site.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(site, Line))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
# viewing shannon diversity
shannon_index
## # A tibble: 20 × 3
## # Groups: site [2]
## site Line shannon
## <chr> <dbl> <dbl>
## 1 Cuevas 1 1.19
## 2 Cuevas 2 2.03
## 3 Cuevas 3 1.83
## 4 Cuevas 4 1.77
## 5 Cuevas 5 1.30
## 6 Cuevas 6 2.10
## 7 Cuevas 7 1.77
## 8 Cuevas 8 1.78
## 9 Cuevas 9 2.02
## 10 Cuevas 10 1.85
## 11 Uppsala 1 1.61
## 12 Uppsala 2 1.61
## 13 Uppsala 3 1.61
## 14 Uppsala 4 1.39
## 15 Uppsala 5 1.61
## 16 Uppsala 6 1.61
## 17 Uppsala 7 2.08
## 18 Uppsala 8 1.79
## 19 Uppsala 9 1.39
## 20 Uppsala 10 1.95
# comparing Shannon diversity between sites
ggplot(shannon_index,
aes(x = site,
y = shannon,
fill = site)) +
geom_boxplot() +
labs(
title = "Shannon Diversity Site Comparison",
x = "Site",
y = "Shannon Diversity Index"
) +
theme_bw()
# calculating simpson diversity
simpson_index <- biodiversity %>%
filter(!is.na(Species), !is.na(Line)) %>%
group_by(site, Line, Species) %>%
summarise(count = n(), .groups = "drop") %>%
group_by(site, Line) %>%
mutate(
proportion = count/ sum(count)
) %>%
summarise(
simpson = 1 - sum(proportion^2)
)
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by site and Line.
## ℹ Output is grouped by site.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(site, Line))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
# viewing simpson diversity table
simpson_index
## # A tibble: 20 × 3
## # Groups: site [2]
## site Line simpson
## <chr> <dbl> <dbl>
## 1 Cuevas 1 0.488
## 2 Cuevas 2 0.796
## 3 Cuevas 3 0.723
## 4 Cuevas 4 0.75
## 5 Cuevas 5 0.585
## 6 Cuevas 6 0.792
## 7 Cuevas 7 0.729
## 8 Cuevas 8 0.72
## 9 Cuevas 9 0.788
## 10 Cuevas 10 0.744
## 11 Uppsala 1 0.8
## 12 Uppsala 2 0.8
## 13 Uppsala 3 0.8
## 14 Uppsala 4 0.75
## 15 Uppsala 5 0.8
## 16 Uppsala 6 0.8
## 17 Uppsala 7 0.875
## 18 Uppsala 8 0.833
## 19 Uppsala 9 0.75
## 20 Uppsala 10 0.857
# comparing simpson index between sites
ggplot(simpson_index,
aes(x = site,
y = simpson,
fill = site)) +
geom_boxplot() +
labs(
title = "Simpson Diversity Site Comparison",
x = "Site",
y = "Simpson Diversity Index"
) +
theme_bw()
# combining richness and shannon tables
evenness_index <- left_join(shannon_index,
species_richness,
by = c("site", "Line"))
# calculating evenness
evenness_index <- evenness_index %>%
mutate(
evenness_index = shannon / log(richness)
)
# viewing eveness table
evenness_index
## # A tibble: 20 × 5
## # Groups: site [2]
## site Line shannon richness evenness_index
## <chr> <dbl> <dbl> <int> <dbl>
## 1 Cuevas 1 1.19 9 0.540
## 2 Cuevas 2 2.03 11 0.847
## 3 Cuevas 3 1.83 11 0.763
## 4 Cuevas 4 1.77 9 0.807
## 5 Cuevas 5 1.30 7 0.668
## 6 Cuevas 6 2.10 14 0.796
## 7 Cuevas 7 1.77 11 0.736
## 8 Cuevas 8 1.78 10 0.771
## 9 Cuevas 9 2.02 12 0.814
## 10 Cuevas 10 1.85 12 0.743
## 11 Uppsala 1 1.61 5 1
## 12 Uppsala 2 1.61 5 1
## 13 Uppsala 3 1.61 5 1
## 14 Uppsala 4 1.39 4 1
## 15 Uppsala 5 1.61 5 1
## 16 Uppsala 6 1.61 5 1
## 17 Uppsala 7 2.08 8 1
## 18 Uppsala 8 1.79 6 1
## 19 Uppsala 9 1.39 4 1
## 20 Uppsala 10 1.95 7 1
# comparing evenness between sites then making box plot
ggplot(evenness_index,
aes(x = site,
y = evenness_index,
fill = site)) +
geom_boxplot() +
labs(
title = "Species Evenness Site Comparison",
x = "Site",
y = "Evenness"
) +
theme_bw()
# Shannon vs Simpson scatterplot
combined_indices <- left_join(
shannon_index,
simpson_index,
by = c("site", "Line")
)
ggplot(combined_indices,
aes(x = shannon,
y = simpson,
color = site)) +
geom_point(size = 3) +
labs(
title = "Shannon vs Simpson Diversity",
x = "Shannon Index",
y = "Simpson Index"
) +
theme_bw()
# creating final summary table by site
summary_table <- species_richness %>%
group_by(site) %>%
summarise(
mean_richness = mean(richness)
) %>%
left_join(
shannon_index %>%
group_by(site) %>%
summarise(mean_shannon = mean(shannon)),
by = "site"
) %>%
left_join(
simpson_index %>%
group_by(site) %>%
summarise(mean_simpson = mean(simpson)),
by = "site"
) %>%
left_join(
evenness_index %>%
group_by(site) %>%
summarise(mean_evenness = mean(evenness_index)),
by = "site"
)
# viewing summary table
summary_table
## # A tibble: 2 × 5
## site mean_richness mean_shannon mean_simpson mean_evenness
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Cuevas 9.73 1.76 0.712 0.749
## 2 Uppsala 5.4 1.66 0.807 1