load("data/r_objects/range_maps.RData")

# Get taxonomic information for target species
names_unique = unique(range_maps$name_matched[!is.na(range_maps$name_matched)])

species_matched = lapply(names_unique, function(name){
  match_result = Symobio::gbif_match_name(name = name)
  if(match_result$status != "ACCEPTED"){
    match_result = gbif_match_name(usageKey = match_result$acceptedUsageKey)
  }
  match_result$name_orig = name
  return(match_result)
}) %>% 
  bind_rows()

# Assign functional groups
functional_groups = species_matched %>% 
  mutate(
    functional_group = case_when(
      order %in% c("Carnivora", "Artiodactyla", "Cingulata", "Perissodactyla") ~ 1,
      order %in% c("Rodentia", "Didelphimorphia", "Soricomorpha", "Paucituberculata", "Lagomorpha") ~ 2,
      order %in% c("Primates", "Pilosa") ~ 3,
      order %in% c("Chiroptera") ~ 4
    ),
    functional_group = factor(functional_group, labels = c("large ground-dwelling", "small ground-dwelling", "arboreal", "flying"))
  ) %>% 
  dplyr::select(
    name_orig,
    name_matched = species,
    functional_group
  ) %>% 
  distinct()

save(functional_groups, file = "data/r_objects/functional_groups.RData")