This RMarkdown file contains the processes used for calculating Fulton’s condition factor (Kc) and the relative condition factor (Kn) of snappers caught on the Saba Bank between June 2023 and June 2024

Load libraries

library(ggplot2)
library(conflicted)
library(cowplot)
library(patchwork)
library(summarytools)
library(tidyverse)
library(viridis)

colors

turbo_colors_onboard <- viridis_pal(option = "turbo", begin = 0.05, end = 0.95)(9)
turbo_colors_onboard
## [1] "#3E378FFF" "#4683F9FF" "#1FC9DDFF" "#3BF58FFF" "#A2FC3CFF" "#E7D739FF"
## [7] "#FE932AFF" "#E3440AFF" "#A31301FF"

Load data file

snappers_df2506 <- read.csv("snapperdata_250624.csv")

#class categorical data as nominal factors
snappers_df2506$catch_month <- factor(snappers_df2506$catch_month)
snappers_df2506$year <- factor(snappers_df2506$year)
snappers_df2506$species <- factor(snappers_df2506$species)
snappers_df2506$common_name <- factor(snappers_df2506$common_name)
snappers_df2506$frozen <- factor(snappers_df2506$frozen)
snappers_df2506$catch_method <- factor(snappers_df2506$catch_method)
snappers_df2506$bait <- factor(snappers_df2506$bait)
snappers_df2506$area <- factor(snappers_df2506$area)
snappers_df2506$finclip <- factor(snappers_df2506$finclip)
snappers_df2506$otoliths <- factor(snappers_df2506$otoliths)
snappers_df2506$gutted <- factor(snappers_df2506$gutted)
snappers_df2506$gonads_present <- factor(snappers_df2506$gonads_present)
snappers_df2506$sex <- factor(snappers_df2506$sex)
snappers_df2506$maturity <- factor(snappers_df2506$maturity)

summary(snappers_df2506)
View(snappers_df2506)

Calculate Fulton’s condition factor (Kc)

Kc = 100·WT/TL^3

conflicts_prefer(dplyr::filter)
## [conflicted] Will prefer dplyr::filter over any other package.
#remove na values
df_conditionfactors <- snappers_df2506 %>%
  drop_na(TL_CM) %>%
  drop_na(W_G)

#calc Kc
Kc <- (100*df_conditionfactors$W_G/(df_conditionfactors$TL_CM)^3)
df_conditionfactors$Kc <- Kc

#generate summary
Kc_summary <- df_conditionfactors %>%
  group_by(species) %>%
  summarize(
    count = n(),
    min = min(Kc, na.rm = TRUE),
    max = max(Kc, na.rm = TRUE),
    mean = mean(Kc, na.rm = TRUE),
    sd = sd(Kc, na.rm = TRUE)
  )
Kc_summary
## # A tibble: 6 × 6
##   species                    count   min   max  mean     sd
##   <fct>                      <int> <dbl> <dbl> <dbl>  <dbl>
## 1 Etelis oculatus                7 0.666 0.975 0.856 0.105 
## 2 Lutjanus buccanella           82 0.774 1.73  1.39  0.132 
## 3 Lutjanus synagris             30 1.20  1.47  1.33  0.0661
## 4 Lutjanus vivanus              91 0.833 2.86  1.28  0.244 
## 5 Pristipomoides aquilonaris    23 1.15  1.52  1.35  0.0899
## 6 Rhomboplites aurorubens       62 0.720 1.68  1.37  0.181

Plot Kc values

plot_Kc <-ggplot(df_conditionfactors, aes(x = species, y = Kc)) + 
  geom_boxplot(aes(color = species),
               show.legend = FALSE) +
  theme_classic() +
  scale_x_discrete(name = "Species", 
                   labels = str_wrap(c("E. oculatus (n = 7)", 
                                       "L. buccanella (n=82)", 
                                       "L. synagris (n=30)", 
                                       "L. vivanus (n=91)", 
                                       "P. aquilonaris (n=24)", 
                                       "R. aurorubens (n=71)"), width = 14)) +
  scale_y_continuous(name = "Fulton's condition factor (Kc)") +
  labs(title = "Fulton's condition factor per species") +
  theme(axis.text.x=element_text(face = "italic")) +
  scale_fill_manual(values = turbo_colors_onboard[3], turbo_colors_onboard[5], turbo_colors_onboard[6], turbo_colors_onboard[8], turbo_colors_onboard[9])

plot_Kc

ggsave("plot_Kc.png", plot = plot_Kc, width = 4.8, height = 3.8, dpi = 400)

Calculate relative condition factor (Kn) using parameters estimated from TL-W relationships

Kn = WT/(a·TL^b)

#BS
#a = 0.009687, b = 3.106410
BS_Kn <- df_conditionfactors %>%
  filter(species == "Lutjanus buccanella") %>%
  mutate(Kn = W_G / (0.009687 * TL_CM^(3.106410)))

#LS
#a = 0.0158534, b = 2.9472123
LS_Kn <- df_conditionfactors %>%
  filter(species == "Lutjanus synagris") %>%
  mutate(Kn = W_G / (0.0158534 * TL_CM^(2.9472123)))

#YS
#a = 0.009313, b = 3.086674
YS_Kn <- df_conditionfactors %>%
  filter(species == "Lutjanus vivanus") %>%
  mutate(Kn = W_G / (0.009313 * TL_CM^(3.086674)))

#WN
#a = 0.006048, b = 3.226819
WN_Kn <- df_conditionfactors %>%
  filter(species == "Pristipomoides aquilonaris") %>%
  mutate(Kn = W_G / (0.006048 * TL_CM^(3.226819)))

#VS
#a = 0.033884, b = 2.705590
VS_Kn <- df_conditionfactors %>%
  filter(species == "Rhomboplites aurorubens") %>%
  mutate(Kn = W_G / (0.033884 * TL_CM^(2.705590)))

df_conditionfactors <- bind_rows(BS_Kn, LS_Kn, YS_Kn, WN_Kn, VS_Kn)
View(df_conditionfactors)

#generate summary
Kn_summary <- df_conditionfactors %>%
  group_by(species) %>%
  summarize(
    count = n(),
    min = min(Kn, na.rm = TRUE),
    max = max(Kn, na.rm = TRUE),
    mean = mean(Kn, na.rm = TRUE),
    sd = sd(Kn, na.rm = TRUE),
    median = median(Kn, na.rm = TRUE)
  )
Kn_summary
## # A tibble: 5 × 7
##   species                    count   min   max  mean     sd median
##   <fct>                      <int> <dbl> <dbl> <dbl>  <dbl>  <dbl>
## 1 Lutjanus buccanella           82 0.565  1.21 1.00  0.0954  1.01 
## 2 Lutjanus synagris             30 0.911  1.11 0.996 0.0501  0.995
## 3 Lutjanus vivanus              91 0.618  2.24 1.02  0.197   1.02 
## 4 Pristipomoides aquilonaris    23 0.851  1.09 0.997 0.0571  0.987
## 5 Rhomboplites aurorubens       62 0.568  1.30 1.01  0.102   1.01

Plot Kn values

plot_Kn <-ggplot(df_conditionfactors, aes(x = species, y = Kn)) + 
  geom_boxplot(aes(color = species),
               show.legend = FALSE) +
  theme_classic() +
  scale_x_discrete(name = "Species", 
                   labels = str_wrap(c("L. buccanella (n=82)", 
                                       "L. synagris (n=30)", 
                                       "L. vivanus (n=91)", 
                                       "P. aquilonaris (n=24)", 
                                       "R. aurorubens (n=71)"), width = 14)) +
  scale_y_continuous(name = "Relative condition factor (Kn)") +
  labs(title = "Relative condition factor per species") +
  theme(axis.text.x=element_text(face = "italic")) +
  scale_fill_manual(values = turbo_colors_onboard[3], turbo_colors_onboard[5], turbo_colors_onboard[6], turbo_colors_onboard[8], turbo_colors_onboard[9])

plot_Kn

ggsave("plot_Kn.png", plot = plot_Kn, width = 4.8, height = 3.8, dpi = 400)