R/CVlist.camp.r

Defines functions CVlist.camp

Documented in CVlist.camp

#' Abundancias en número y peso totales para todas las especies de un grupo en una campaña
#'
#' Función de resultados
#' @param gr Grupo de la especie: 1 peces, 2 crustáceos 3 moluscos 4 equinodermos 5 invertebrados 6 para deshechos y otros. 9 incluye todos los grupos a excepción del 6
#' @param camp Campaña de la que se solicitan los resultados un año concreto (XX): Demersales "NXX", Porcupine "PXX", Arsa primavera "1XX" y Arsa otoño "2XX"
#' @param dns Elige el origen de las bases de datos: Porcupine "Pnew" o "Porc", Cantábrico "Cant" o "Cnew", Golfo de Cádiz "Arsa" y Mediterráneo "Medi" P
#' @param cor.time si T corrige abundancias a duración de lance de 30 minutos
#' @param kg Si T saca los resultados en Kg, si F en gramos
#' @param dec Número de decimales de los resultados
#' @param percents Si T devuelve los resultados en porcentaje del total
#' @param excl.sect Excluye los sectores o subsectores dados como caracteres
#' @param minim Excluye por defecto los valores con peso menor de el valor que se elija (atención si kg=T), también se puede hacer a posteriori para cualquiera de los campos con tabla tabla$NombColumn>XX,
#' @return Devuelve un data.fram con valores en orden decreciente de abundancia con columnas gr,esp,especie,familia,camp,weight,number,nlan (número de lances en que aparece cada especie)
#' @examples CVlist.camp(gr=1,camp="P06",dns="Porc")
#' @export
#'
CVlist.camp<- function(gr="1",camp,dns,kg=TRUE,dec=3,percents=FALSE,cor.time=TRUE,excl.sect=NA,minim=F) {
  if (length(camp)>1) {stop("seleccionadas más de una campaña, no se pueden sacar resultados de más de una")}
  ch1<-DBI::dbConnect(odbc::odbc(), dns)
  listsps<-DBI::dbGetQuery(ch1,paste0("select grupo, esp from FAUNA",camp))
  DBI::dbDisconnect(ch1)
  ch2<-DBI::dbConnect(odbc::odbc(), "Camp")
  espfam<-DBI::dbGetQuery(ch2,"select grupo,esp,especie,familia from Especies")
  DBI::dbDisconnect(ch2)
  if (gr!="9") {
    listsps<-dplyr::filter(listsps,grupo==gr)
    espfam<-dplyr::filter(espfam,grupo==gr)
  }
  else {
    listsps<-dplyr::filter(listsps,grupo!=6)
    espfam<-dplyr::filter(espfam,grupo!=6)
  }
  espfam$esp<-format(espfam$esp,width=3,justify="r")
  listsps$esp<-sapply(listsps$esp,format,width=3,justify="r")
  listesp<-levels(factor(listsps$esp))
  listke<-levels(factor(paste0(listsps$grupo,listsps$esp)))
  espfam$ke<-paste0(espfam$grupo,espfam$esp)
  dumb<-data.frame(gr=substr(listke,1,1),esp=substr(listke,2,5),especie=espfam$especie[match(listke,espfam$ke)],
                   familia=espfam$familia[match(listke,espfam$ke)],camp=camp,weight=NA,number=NA,nlan=NA,stringsAsFactors=FALSE)
  for (i in 1:nrow(dumb)) {
    temp<-CV.camps(dumb$gr[i],dumb$esp[i],camp,dns,cor.time=cor.time,kg,dec,excl.sect)
    dumb$weight[i]<-as.numeric(temp[2])
    dumb$number[i]<-as.numeric(temp[3])
    dumb$nlan[i]<-sum(datgr.camp(gr=dumb$gr[i],esp=dumb$esp[i],camp,dns,cor.time=cor.time)[,5]>0)
  }
  dumb$especie[is.na(dumb$especie)]<-"ERROR: CODIGO DESCONOCIDO"
  dumbnam<-colnames(dumb)
  if (percents) {
    dumb<-cbind(dumb[,1:5],round(dumb[,6]*100/sum(dumb[,6]),dec),round(dumb[,7]*100/sum(dumb[,7]),dec),
                dumb[,8])
    colnames(dumb)<-dumbnam
  }
  row.names(dumb)<-NULL
  if (!is.logical(minim)) {dumb<-dumb[dumb$weight>minim,]}
  dumb[order(dumb[,6],decreasing=TRUE),]
}
fvgls/CampR documentation built on April 5, 2024, 2:56 p.m.