RedToTraits(IUCNGROUPtoTraits)

Merge IUCN Red List threat category into a trait data frame by matching species names.

data
Args:IUCNGROUPtoTraits — data frame with species and IUCN status columns
RedToTraits <- function(IUCNGROUPtoTraits) {
  RedToTraits <- matrix(
    rep(NA, nrow(IUCNGROUPtoTraits)),
    ncol = 1,
    dimnames = list(IUCNGROUPtoTraits$Species, "IUCN")
  )

  for (i in 1:nrow(IUCNGROUPtoTraits)) {
    selRows <- which(IUCNGROUPtoTraits$Species == IUCNGROUPtoTraits$Species[i])
    if (length(selRows) > 1) {
      dataAux <- IUCNGROUPtoTraits[selRows, ]
      if (any(is.na(dataAux$infra_name))) {
        coger <- which(is.na(dataAux$infra_name))
        if (length(coger) == 1) {
          RedToTraits[IUCNGROUPtoTraits$Species[i], "IUCN"] <- as.character(dataAux$categorySimp[coger])
        } else {
          if (length(unique(dataAux$categorySimp[coger])) == 1) {
            RedToTraits[IUCNGROUPtoTraits$Species[i], "IUCN"] <-
              as.character(unique(dataAux$categorySimp[coger]))
          } else {
            RedToTraits[IUCNGROUPtoTraits$Species[i], "IUCN"] <-
              as.character(sort(unique(dataAux$categorySimp))[1])
          }
        }
      } else {
        RedToTraits[IUCNGROUPtoTraits$Species[i], "IUCN"] <-
          as.character(sort(unique(dataAux$categorySimp))[1])
      }
    } else {
      RedToTraits[IUCNGROUPtoTraits$Species[i], "IUCN"] <-
        as.character(IUCNGROUPtoTraits[selRows, "categorySimp"])
    }
  }
  return(RedToTraits)
}