#############################################################################
#'
#' Diagnostic plots and summaries for a raw PacFIN dataset pre-filtering.
#'
#' \code{plotRawData} creates a set of diagnostic plots and summaries, writing
#' pdfs and a text file in addition to plotting onscreen and console.
#'
#' \subsection{Workflow}{
#' Run \code{plotRawData} to visualize and summarize the PacFIN data prior to
#' running \code{\link{cleanPacFIN}}.
#' }
#'
#' @param rawData an unfiltered PacFIN dataset
#' @template fname
#'
#' @export
#'
#' @details
#' Will create a filename from the species ID if one is not provided.
#'
##############################################################################
plotRawData <- function(rawData,
fname = NULL) {
cat( "\nRunning diagnostics\n\n" )
if ( is.null(fname) ) {
# Set up filenames for txt, pdf
species = sort(unique(rawData$SPID))
pdffile = paste( "Diags.", species, ".pdf", sep="")
txtfile = paste( "Diags.", species, ".txt", sep="")
} else {
# Remove the extension
fname <- gsub("\\.[a-zA-Z]{3}$", "", fname)
pdffile = paste(fname, ".pdf", sep="")
txtfile = paste(fname, ".txt", sep="")
} # End ifelse
cat( "Plots will be written to", pdffile, "\n" )
cat( "Summaries will be written to", txtfile, "\n" )
sink(file=txtfile,split=T, append=T)
# Develop statistics of interest
len = rawData[!is.na(rawData$FISH_LENGTH),]
len$len = floor(len$FISH_LENGTH/10)
len$depth_mid = (len$DEPTH_MIN+len$DEPTH_MAX)/2
ltows = len[!duplicated(len$SAMPLE_NO),]
meanLen.yr = tapply(len$len,list(len$SAMPLE_YEAR),mean)
meanLen = tapply(len$len,list(len$SAMPLE_NO,len$SAMPLE_YEAR),mean)
age = rawData[!is.na(rawData$FISH_AGE_YEARS_FINAL),]
age$Age = age$FISH_AGE_YEARS_FINAL
atows = age[!duplicated(age$SAMPLE_NO),]
meanAge = tapply(age$Age,list(age$SAMPLE_NO,age$SAMPLE_YEAR),mean)
# Print tables
#cat("Lengths for which FISH_LENGTH_TYPE is T: ")
#print(len[len$FISH_LENGTH_TYPE=="T",])
#cat("\n\n")
cat("Records per SAMPLE_YEAR\n\n")
print(table(rawData$SAMPLE_YEAR,useNA="ifany"))
cat("\n\n")
cat("FISH_LENGTH_TYPE\n")
print(table(rawData$FISH_LENGTH_TYPE,useNA="ifany"))
cat("\n\n")
cat("FISH_LENGTH\n")
print(table(rawData$FISH_LENGTH,useNA="ifany"))
cat("\n\n")
cat("GEAR vs GRID\n")
print(table(len$GEAR,len$GRID))
cat("\n\n")
cat("FISH_LENGTH for lengthed fish\n")
print(table(len$FISH_LENGTH_TYPE,useNA="ifany"))
cat("\n\n")
cat("SAMPLE_YEAR vs SOURCE_AGID for lengthed fish\n")
print(table(len$SAMPLE_YEAR,len$SOURCE_AGID))
cat("\n\n")
cat("Difference between FISH_LENGTH and floor(FISH_LENGTH)\n")
print(table(len$FISH_LENGTH-floor(len$FISH_LENGTH)))
cat("\n\n")
cat("Difference between FISH_LENGTH/10 and floor(FISH_LENGTH/10)\n")
print(table(round(len$FISH_LENGTH/10-floor(len$FISH_LENGTH/10),1)))
cat("\n\n")
cat("DEPTH_AVG for lengthed fish\n")
print(table(is.na(len$DEPTH_AVG)))
cat("\n\n")
cat("SAMPLE_YEAR vs. SOURCE_AGID for SAMPLE_NOs with lengthed fish\n")
print(table(ltows$SAMPLE_YEAR,ltows$SOURCE_AGID))
cat("\n\n")
cat("DEPTH_AVG for SAMPLE_NOs with lengthed fish\n")
print(table(is.na(ltows$DEPTH_AVG),useNA="ifany"))
cat("\n\n")
cat("Number of aged fish\n")
print(nrow(age))
cat("\n\n")
cat("SAMPLE_YEAR vs. SOURCE_AGID for SAMPLE_NOs with aged fish\n")
print(table(atows$SAMPLE_YEAR,atows$SOURCE_AGID))
cat("\n\n")
cat("SAMPLE_YEAR vs. SOURCE_AGID for aged fish\n")
print(table(age$SAMPLE_YEAR,age$SOURCE_AGID))
cat("\n\n")
cat("age vs. ageX for aged fish\n")
print(table(age[, grep("^age[0-9]*$", colnames(age))], useNA = "ifany"))
cat("\n\n")
sink()
# Plots
# Fingers crossed, works the same for Mac and PC
# Set up device for pdf
grDevices::graphics.off()
grDevices::pdf(pdffile)
graphics::par(mfrow=c(2,2))
graphics::hist(len$len,nclass=30, xlab="", main="FISH_LENGTH")
graphics::barplot(table(10*round(len$FISH_LENGTH/10-floor(len$FISH_LENGTH/10),1)),
xlab="Difference in rounded and floored lengths")
plot(len$FISH_LENGTH,len$FORK_LENGTH,pch=16, xlab="FISH_LENGTH", ylab="FORK_LENGTH")
plot(len$DEPTH_AVG,len$depth_mid,xlim=c(0,400),ylim=c(0,400), xlab="DEPTH_AVG", ylab="Depth_mid")
graphics::abline(a=0,b=1)
graphics::hist(ltows$DEPTH_AVG, xlab="", main="DEPTH_AVG")
graphics::hist(age$Age,nclass=30, xlab="", main="Age")
graphics::par(mfrow=c(2,1))
graphics::boxplot(as.list(as.data.frame(meanLen)),varwidth=T,main="Mean length")
graphics::boxplot(as.list(as.data.frame(meanAge)),varwidth=T,main="Mean age")
grDevices::dev.off()
} # End plotRawData
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.