Setup

# Packages
library(tidyverse)
## -- Attaching packages -------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.0     v purrr   0.2.5
## v tibble  2.0.0     v dplyr   0.7.8
## v tidyr   0.8.2     v stringr 1.3.1
## v readr   1.3.1     v forcats 0.3.0
## -- Conflicts ----------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

# Create a small dataset for examples
tree <- fgeo.data::luquillo_tree5_random
species <- unique(tree$sp)[1:3]
tree <- filter(tree, sp %in% species)

Data overview

table(tree$sp)
## 
## CASARB DACEXC MYRSPL 
##     94     33      9

tree
## # A tibble: 136 x 19
##    treeID stemID tag   StemTag sp    quadrat    gx    gy MeasureID CensusID
##     <int>  <int> <chr> <chr>   <chr> <chr>   <dbl> <dbl>     <int>    <int>
##  1    104    143 10009 10009   DACE~ 113      10.3  245.    439947        5
##  2    119    158 1001~ 100104  MYRS~ 1021    183.   410.    466597        5
##  3    180    225 1001~ 100174  CASA~ 921     165.   410.    466623        5
##  4   1168   1438 10131 10131   DACE~ 413      70.6  252.    440031        5
##  5   1380 114352 1015~ 149529  CASA~ 820     142.   386.    466957        5
##  6   2849   3421 1031~ 103156  CASA~ 420      79.2  389.    467249        5
##  7   3354 114750 1037~ 39879   CASA~ 220      32.0  385.    467393        5
##  8   4183   5086 10472 10472   CASA~ 1413    270.   242.    440292        5
##  9   7389 115727 10866 137800  CASA~ 1212    225.   226.    440616        5
## 10   7767 115859 1091~ 156303  CASA~ 722     132.   425.    468815        5
## # ... with 126 more rows, and 9 more variables: dbh <dbl>, pom <chr>,
## #   hom <dbl>, ExactDate <date>, DFstatus <chr>, codes <chr>,
## #   nostems <dbl>, status <chr>, date <dbl>

Calculate proportion by species.

  • Count all individuals by species.
tree_n <- tree %>% 
  add_count(sp) %>% 
  arrange(sp, treeID) %>% 
  select(treeID, sp, n, everything())
tree_n
## # A tibble: 136 x 20
##    treeID sp        n stemID tag   StemTag quadrat    gx    gy MeasureID
##     <int> <chr> <int>  <int> <chr> <chr>   <chr>   <dbl> <dbl>     <int>
##  1    180 CASA~    94    225 1001~ 100174  921     165.   410.    466623
##  2   1380 CASA~    94 114352 1015~ 149529  820     142.   386.    466957
##  3   2849 CASA~    94   3421 1031~ 103156  420      79.2  389.    467249
##  4   3354 CASA~    94 114750 1037~ 39879   220      32.0  385.    467393
##  5   4183 CASA~    94   5086 10472 10472   1413    270.   242.    440292
##  6   7389 CASA~    94 115727 10866 137800  1212    225.   226.    440616
##  7   7767 CASA~    94 115859 1091~ 156303  722     132.   425.    468815
##  8  10317 CASA~    94  12947 1122~ 112272  1424    261.   477.    469449
##  9  12918 CASA~    94 116633 1152~ 166501  1124    215.   461.    470017
## 10  16254 CASA~    94  20128 1190~ 119094  823     152.   445.    470847
## # ... with 126 more rows, and 10 more variables: CensusID <int>,
## #   dbh <dbl>, pom <chr>, hom <dbl>, ExactDate <date>, DFstatus <chr>,
## #   codes <chr>, nostems <dbl>, status <chr>, date <dbl>
  • Calculate the proportion relative to the total count of individuals.
tree_prop <- tree_n %>% 
  mutate(
    total_n = nrow(.),
    proportion = n / total_n
  ) %>% 
  select(treeID, total_n, n, proportion, everything()) %>% 
  unique() 
tree_prop
## # A tibble: 136 x 22
##    treeID total_n     n proportion sp    stemID tag   StemTag quadrat    gx
##     <int>   <int> <int>      <dbl> <chr>  <int> <chr> <chr>   <chr>   <dbl>
##  1    180     136    94      0.691 CASA~    225 1001~ 100174  921     165. 
##  2   1380     136    94      0.691 CASA~ 114352 1015~ 149529  820     142. 
##  3   2849     136    94      0.691 CASA~   3421 1031~ 103156  420      79.2
##  4   3354     136    94      0.691 CASA~ 114750 1037~ 39879   220      32.0
##  5   4183     136    94      0.691 CASA~   5086 10472 10472   1413    270. 
##  6   7389     136    94      0.691 CASA~ 115727 10866 137800  1212    225. 
##  7   7767     136    94      0.691 CASA~ 115859 1091~ 156303  722     132. 
##  8  10317     136    94      0.691 CASA~  12947 1122~ 112272  1424    261. 
##  9  12918     136    94      0.691 CASA~ 116633 1152~ 166501  1124    215. 
## 10  16254     136    94      0.691 CASA~  20128 1190~ 119094  823     152. 
## # ... with 126 more rows, and 12 more variables: gy <dbl>,
## #   MeasureID <int>, CensusID <int>, dbh <dbl>, pom <chr>, hom <dbl>,
## #   ExactDate <date>, DFstatus <chr>, codes <chr>, nostems <dbl>,
## #   status <chr>, date <dbl>