##Loop, plots, and Spearman's tests of ecological percentages of PBDB Jurassic regional occurrences #Read percent confidence interval function source("percentConfidenceInterval.R") #Read percent ecology function to calculate percentages with confidence intervals source("percentEcolTrait.R") #Read dataset occurrences2 <- read.csv('ClusteredOccurrences.csv', header=TRUE, stringsAsFactors=FALSE) #Create objects to define dimensions of matrices below stagecolumn <- 4 JurassicStages <- sort(unique(occurrences2[occurrences2$stage!="0", stagecolumn])) geoClusters <- sort(unique(occurrences2$geo_cluster)) #Create empty matrices that will be used to fill estimated percentages calculated by running loop sinfaunalTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) dinfaunalTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) epifaunalTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) cementedTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) freelivingTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) pedunculateTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) mobileTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) limitedmobileTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) sessileTableE <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) #Create empty matrices that will be used to fill lower confidence limit percentages calculated by running loop sinfaunalTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) dinfaunalTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) epifaunalTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) cementedTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) freelivingTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) pedunculateTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) mobileTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) limitedmobileTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) sessileTableLCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) #Create empty matrices that will be used to fill upper condfidence limit percentages calculated by running loop sinfaunalTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) dinfaunalTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) epifaunalTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) cementedTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) freelivingTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) pedunculateTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) mobileTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) limitedmobileTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) sessileTableUCL <- matrix(data=0, nrow=length(JurassicStages), ncol=length(geoClusters), dimnames=list(JurassicStages, geoClusters)) #Loop to calculate percentage of each ecological trait by cluster for each stage for (time in 1:length(JurassicStages)) { for (geo in 1:length(geoClusters)) { sinfaunal <- percentEcolTrait(occurrences2, "life_habit", "shallow infaunal", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) sinfaunalTableE[time, geo] <- sinfaunal[2] sinfaunalTableLCL[time, geo] <- sinfaunal[1] sinfaunalTableUCL[time, geo] <- sinfaunal[3] dinfaunal <- percentEcolTrait(occurrences2, "life_habit", "deep infaunal", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) dinfaunalTableE[time, geo] <- dinfaunal[2] dinfaunalTableLCL[time, geo] <- dinfaunal[1] dinfaunalTableUCL[time, geo] <- dinfaunal[3] epifaunal <- percentEcolTrait(occurrences2, "life_habit", "epifaunal", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) epifaunalTableE[time, geo] <- epifaunal[2] epifaunalTableLCL[time, geo] <- epifaunal[1] epifaunalTableUCL[time, geo] <- epifaunal[3] cemented <- percentEcolTrait(occurrences2, "stability", "cemented", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) cementedTableE[time, geo] <- cemented[2] cementedTableLCL[time, geo] <- cemented[1] cementedTableUCL[time, geo] <- cemented[3] freeliving <- percentEcolTrait(occurrences2, "stability", "free-living", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) freelivingTableE[time, geo] <- freeliving[2] freelivingTableLCL[time, geo] <- freeliving[1] freelivingTableUCL[time, geo] <- freeliving[3] pedunculate <- percentEcolTrait(occurrences2, "stability", "pedunculate", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) pedunculateTableE[time, geo] <- pedunculate[2] pedunculateTableLCL[time, geo] <- pedunculate[1] pedunculateTableUCL[time, geo] <- pedunculate[3] mobile <- percentEcolTrait(occurrences2, "motility", "mobile", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) mobileTableE[time, geo] <- mobile[2] mobileTableLCL[time, geo] <- mobile[1] mobileTableUCL[time, geo] <- mobile[3] limitedmobile <- percentEcolTrait(occurrences2, "motility", "limited mobile", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) limitedmobileTableE[time, geo] <- limitedmobile[2] limitedmobileTableLCL[time, geo] <- limitedmobile[1] limitedmobileTableUCL[time, geo] <- limitedmobile[3] sessile <- percentEcolTrait(occurrences2, "motility", "sessile", desiredStages=JurassicStages[time], desiredGeoclusters=geoClusters[geo]) sessileTableE[time, geo] <- sessile[2] sessileTableLCL[time, geo] <- sessile[1] sessileTableUCL[time, geo] <- sessile[3] } } -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ##Plots #Create vector of Jurassic stage boundary ages (Myr) based on the 2015 ICS Chronostratigraphy Chart stageBoundaryAges <- c(201.3, 199.3, 190.8, 182.7, 174.1, 170.3, 168.3, 166.1, 163.5, 157.3, 152.1, 145.0) #Duration of each stage (Myr) – Hettangian: 2.0, Sinemurian: 8.5, Pliensbachian: 8.1, Toarcian: 8.6, Aalenian: 3.8, Bajocian: 2.0, Bathonian: 2.2, Callovian: 2.6, Oxfordian: 6.2, Kimmeridian: 5.2, Tithonian: 7.1 #Calculate midpoint of each stage to include in plots midpointAges <- stageBoundaryAges[-length(stageBoundaryAges)] + diff(stageBoundaryAges)/2 midpointAges <- sort(midpointAges) ##Plots of percentages #Plots of life habit dev.new(width=4, length=7) par(mfrow=(c(5,1)), mai=c(0.25, 0.35, 0.075, 0.25)) plot(midpointAges, sinfaunalTableE[,1], main='Europe', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, sinfaunalTableE[,1], type="o", pch=16, lty=1, col="blue") segments(midpointAges, sinfaunalTableLCL[ , 1], midpointAges, sinfaunalTableUCL[ , 1], col="blue") points(midpointAges, dinfaunalTableE[,1], type="o", pch=16, lty=2, col="blue") segments(midpointAges, dinfaunalTableLCL[ , 1], midpointAges, dinfaunalTableUCL[ , 1], col="blue") points(midpointAges, epifaunalTableE[,1], type="o", pch=16, lty=3, col="red") segments(midpointAges, epifaunalTableLCL[ , 1], midpointAges, epifaunalTableUCL[ , 1], col="red") legend("top", c("epifaunal", "shallow infaunal", "deep infaunal"), bty="n", lty=c(3, 1, 2), col=c("red", "blue", "blue"), horiz=TRUE, x.intersp=0.5) plot(midpointAges, sinfaunalTableE[,2], main='Middle East', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, sinfaunalTableE[,2], type="o", pch=16, lty=1, col="blue") segments(midpointAges, sinfaunalTableLCL[ , 2], midpointAges, sinfaunalTableUCL[ , 2], col="blue") points(midpointAges, dinfaunalTableE[,2], type="o", pch=16, lty=2, col="blue") segments(midpointAges, dinfaunalTableLCL[ , 2], midpointAges, dinfaunalTableUCL[ , 2], col="blue") points(midpointAges, epifaunalTableE[,2], type="o", pch=16, lty=3, col="red") segments(midpointAges, epifaunalTableLCL[ , 2], midpointAges, epifaunalTableUCL[ , 2], col="red") plot(midpointAges, sinfaunalTableE[,3], main='New Zealand', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, sinfaunalTableE[,3], type="o", pch=16, lty=1, col="blue") segments(midpointAges, sinfaunalTableLCL[ , 3], midpointAges, sinfaunalTableUCL[ , 3], col="blue") points(midpointAges, dinfaunalTableE[,3], type="o", pch=16, lty=2, col="blue") segments(midpointAges, dinfaunalTableLCL[ , 3], midpointAges, dinfaunalTableUCL[ , 3], col="blue") points(midpointAges, epifaunalTableE[,3], type="o", pch=16, lty=3, col="red") segments(midpointAges, epifaunalTableLCL[ , 3], midpointAges, epifaunalTableUCL[ , 3], col="red") plot(midpointAges, sinfaunalTableE[,4], main='North America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, sinfaunalTableE[,4], type="o", pch=16, lty=1, col="blue") segments(midpointAges, sinfaunalTableLCL[ , 4], midpointAges, sinfaunalTableUCL[ , 4], col="blue") points(midpointAges, dinfaunalTableE[,4], type="o", pch=16, lty=2, col="blue") segments(midpointAges, dinfaunalTableLCL[ , 4], midpointAges, dinfaunalTableUCL[ , 4], col="blue") points(midpointAges, epifaunalTableE[,4], type="o", pch=16, lty=3, col="red") segments(midpointAges, epifaunalTableLCL[ , 4], midpointAges, epifaunalTableUCL[ , 4], col="red") plot(midpointAges, sinfaunalTableE[,5], main='South America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, at=midpointAges, labels=c("He", "Si", "Pl", "To", "Aa", "Baj", "Bat", "Ca", "Ox", "Ki", "Ti"), xlab='Jurassic Stages') axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, sinfaunalTableE[,5], type="o", pch=16, lty=1, col="blue") segments(midpointAges, sinfaunalTableLCL[ , 5], midpointAges, sinfaunalTableUCL[ , 5], col="blue") points(midpointAges, dinfaunalTableE[,5], type="o", pch=16, lty=2, col="blue") segments(midpointAges, dinfaunalTableLCL[ , 5], midpointAges, dinfaunalTableUCL[ , 5], col="blue") points(midpointAges, epifaunalTableE[,5], type="o", pch=16, lty=3, col="red") segments(midpointAges, epifaunalTableLCL[ , 5], midpointAges, epifaunalTableUCL[ , 5], col="red") ##Substrate Stability (Epifaunal life modes) plots dev.new(width=4, length=7) par(mfrow=(c(5,1)), mai=c(0.25, 0.35, 0.075, 0.25)) plot(midpointAges, pedunculateTableE[,1], main='Europe', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, pedunculateTableE[,1], type="o", pch=16, lty=1, col="red") segments(midpointAges, pedunculateTableLCL[, 1], midpointAges, pedunculateTableUCL[,1], col="red") points(midpointAges, cementedTableE[,1], type="o", pch=16, lty=2, col="blue") segments(midpointAges, cementedTableLCL[, 1], midpointAges, cementedTableUCL[ , 1], col="blue") points(midpointAges, freelivingTableE[,1], type="o", pch=16, lty=3, col="red") segments(midpointAges, freelivingTableLCL[, 1], midpointAges, freelivingTableUCL[ , 1], col="red") legend("top", c("pedunculate", "cemented", "free-living"), bty="n", lty=c(1, 2, 3), col=c("red", "blue", col="red"), horiz=TRUE, x.intersp=0.5) plot(midpointAges, pedunculateTableE[,2], main='Middle East', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, pedunculateTableE[,2], type="o", pch=16, lty=1, col="red") segments(midpointAges, pedunculateTableLCL[ , 2], midpointAges, pedunculateTableUCL[ , 2], col="red") points(midpointAges, cementedTableE[,2], type="o", pch=16, lty=2, col="blue") segments(midpointAges, cementedTableLCL[ , 2], midpointAges, cementedTableUCL[ , 2], col="blue") points(midpointAges, freelivingTableE[,2], type="o", pch=16, lty=3, col="red") segments(midpointAges, freelivingTableLCL[ , 2], midpointAges, freelivingTableUCL[ , 2], col="red") plot(midpointAges, pedunculateTableE[,3], main='New Zealand', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, pedunculateTableE[,3], type="o", pch=16, lty=1, col="red") segments(midpointAges, pedunculateTableLCL[ , 3], midpointAges, pedunculateTableUCL[ , 3], col="red") points(midpointAges, cementedTableE[,3], type="o", pch=16, lty=2, col="blue") segments(midpointAges, cementedTableLCL[ , 3], midpointAges, cementedTableUCL[ , 3], col="blue") points(midpointAges, freelivingTableE[,3], type="o", pch=16, lty=3, col="red") segments(midpointAges, freelivingTableLCL[ , 3], midpointAges, freelivingTableUCL[ , 3], col="red") plot(midpointAges, pedunculateTableE[,4], main='North America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, pedunculateTableE[,4], type="o", pch=16, lty=1, col="red") segments(midpointAges, pedunculateTableLCL[ , 4], midpointAges, pedunculateTableUCL[ , 4], col="red") points(midpointAges, cementedTableE[,4], type="o", pch=16, lty=2, col="blue") segments(midpointAges, cementedTableLCL[ , 4], midpointAges, cementedTableUCL[ , 4], col="blue") points(midpointAges, freelivingTableE[,4], type="o", pch=16, lty=3, col="red") segments(midpointAges, freelivingTableLCL[ , 4], midpointAges, freelivingTableUCL[ , 4], col="red") plot(midpointAges, pedunculateTableE[,5], main='South America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, at=midpointAges, labels=c("He", "Si", "Pl", "To", "Aa", "Baj", "Bat", "Ca", "Ox", "Ki", "Ti"), xlab='Jurassic Stage') axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, pedunculateTableE[,5], type="o", pch=16, lty=1, col="red") segments(midpointAges, pedunculateTableLCL[ , 5], midpointAges, pedunculateTableUCL[ , 5], col="red") points(midpointAges, cementedTableE[,5], type="o", pch=16, lty=2, col="blue") segments(midpointAges, cementedTableLCL[ , 5], midpointAges, cementedTableUCL[ , 5], col="blue") points(midpointAges, freelivingTableE[,5], type="o", pch=16, lty=3, col="red") segments(midpointAges, freelivingTableLCL[ , 5], midpointAges, freelivingTableUCL[ , 5], col="red") ##Plots of Motility dev.new(width=4, length=7) par(mfrow=(c(5,1)), mai=c(0.25, 0.35, 0.075, 0.25)) plot(midpointAges, mobileTableE[,1], main='Europe', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, mobileTableE[,1], type="o", pch=16, lty=1, col="blue") segments(midpointAges, mobileTableLCL[ , 1], midpointAges, mobileTableUCL[ , 1], col="blue") points(midpointAges, limitedmobileTableE[,1], type="o", pch=16, lty=2, col="blue") segments(midpointAges, limitedmobileTableLCL[ , 1], midpointAges, limitedmobileTableUCL[ , 1], col="blue") points(midpointAges, sessileTableE[,1], type="o", pch=16, lty=3, col="red") segments(midpointAges, sessileTableLCL[ , 1], midpointAges, sessileTableUCL[ , 1], col="red") legend("top", c("sessile", "limited mobile", "mobile"), bty="n", lty=c(3, 2, 1), col=c("red", "blue", "blue"), horiz=TRUE, x.intersp=0.5) plot(midpointAges, mobileTableE[,2], main='Middle East', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, mobileTableE[,2], type="o", pch=16, lty=1, col="blue") segments(midpointAges, mobileTableLCL[ , 2], midpointAges, mobileTableUCL[ , 2], col="blue") points(midpointAges, limitedmobileTableE[,2], type="o", pch=16, lty=2, col="blue") segments(midpointAges, limitedmobileTableLCL[ , 2], midpointAges, limitedmobileTableUCL[ , 2], col="blue") points(midpointAges, sessileTableE[,2], type="o", pch=16, lty=3, col="red") segments(midpointAges, sessileTableLCL[ , 2], midpointAges, sessileTableUCL[ , 2], col="red") plot(midpointAges, mobileTableE[,3], main='New Zealand', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, mobileTableE[,3], type="o", pch=16, lty=1, col="blue") segments(midpointAges, mobileTableLCL[ , 3], midpointAges, mobileTableUCL[ , 3], col="blue") points(midpointAges, limitedmobileTableE[,3], type="o", pch=16, lty=2, col="blue") segments(midpointAges, limitedmobileTableLCL[ , 3], midpointAges, limitedmobileTableUCL[ , 3], col="blue") points(midpointAges, sessileTableE[,3], type="o", pch=16, lty=3, col="red") segments(midpointAges, sessileTableLCL[ , 3], midpointAges, sessileTableUCL[ , 3], col="red") plot(midpointAges, mobileTableE[,4], main='North America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, labels=FALSE, lwd.ticks=0) axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, mobileTableE[,4], type="o", pch=16, lty=1, col="blue") segments(midpointAges, mobileTableLCL[ , 4], midpointAges, mobileTableUCL[ , 4], col="blue") points(midpointAges, limitedmobileTableE[,4], type="o", pch=16, lty=2, col="blue") segments(midpointAges, limitedmobileTableLCL[ , 4], midpointAges, limitedmobileTableUCL[ , 4], col="blue") points(midpointAges, sessileTableE[,4], type="o", pch=16, lty=3, col="red") segments(midpointAges, sessileTableLCL[ , 4], midpointAges, sessileTableUCL[ , 4], col="red") plot(midpointAges, mobileTableE[,5], main='South America', xlab='', ylab='', ylim=range(0:100), las=1, type='n', axes=FALSE) axis(1, at=midpointAges, labels=c("He", "Si", "Pl", "To", "Aa", "Baj", "Bat", "Ca", "Ox", "Ki", "Ti"), xlab='Jurassic Stage') axis(2, at=seq(0, 100, by=20), las=1) points(midpointAges, mobileTableE[,5], type="o", pch=16, lty=1, col="blue") segments(midpointAges, mobileTableLCL[ , 5], midpointAges, mobileTableUCL[ , 5], col="blue") points(midpointAges, limitedmobileTableE[,5], type="o", pch=16, lty=2, col="blue") segments(midpointAges, limitedmobileTableLCL[ , 5], midpointAges, limitedmobileTableUCL[ , 5], col="blue") points(midpointAges, sessileTableE[,5], type="o", pch=16, lty=3, col="red") segments(midpointAges, sessileTableLCL[ , 5], midpointAges, sessileTableUCL[ , 5], col="red") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ##Spearman's rank correlation tests of ecological metrics for each region by Jurassic stages #Spearman's rank correlation tests for Europe Cluster cor.test(midpointAges, sinfaunalTableE[,1], method='spearman') cor.test(midpointAges, dinfaunalTableE[,1], method='spearman') cor.test(midpointAges, epifaunalTableE[,1], method='spearman') cor.test(midpointAges, freelivingTableE[,1], method='spearman') cor.test(midpointAges, cementedTableE[,1], method='spearman') cor.test(midpointAges, pedunculateTableE[,1], method='spearman') cor.test(midpointAges, sessileTableE[,1], method='spearman') cor.test(midpointAges, limitedmobileTableE[,1], method='spearman') cor.test(midpointAges, mobileTableE[,1], method='spearman') #Spearman's rank correlation tests for Middle East Cluster cor.test(midpointAges, sinfaunalTableE[,2], method='spearman') cor.test(midpointAges, dinfaunalTableE[,2], method='spearman') cor.test(midpointAges, epifaunalTableE[,2], method='spearman') cor.test(midpointAges, freelivingTableE[,2], method='spearman') cor.test(midpointAges, cementedTableE[,2], method='spearman') cor.test(midpointAges, pedunculateTableE[,2], method='spearman') cor.test(midpointAges, sessileTableE[,2], method='spearman') cor.test(midpointAges, limitedmobileTableE[,2], method='spearman') cor.test(midpointAges, mobileTableE[,2], method='spearman') #Spearman's rank correlation tests for New Zealand Cluster cor.test(midpointAges, sinfaunalTableE[,3], method='spearman') cor.test(midpointAges, dinfaunalTableE[,3], method='spearman') cor.test(midpointAges, epifaunalTableE[,3], method='spearman') cor.test(midpointAges, freelivingTableE[,3], method='spearman') cor.test(midpointAges, cementedTableE[,3], method='spearman') cor.test(midpointAges, pedunculateTableE[,3], method='spearman') cor.test(midpointAges, sessileTableE[,3], method='spearman') cor.test(midpointAges, limitedmobileTableE[,3], method='spearman') cor.test(midpointAges, mobileTableE[,3], method='spearman') #Spearman's rank correlation tests for North America Cluster cor.test(midpointAges, sinfaunalTableE[,4], method='spearman') cor.test(midpointAges, dinfaunalTableE[,4], method='spearman') cor.test(midpointAges, epifaunalTableE[,4], method='spearman') cor.test(midpointAges, freelivingTableE[,4], method='spearman') cor.test(midpointAges, cementedTableE[,4], method='spearman') cor.test(midpointAges, pedunculateTableE[,4], method='spearman') cor.test(midpointAges, sessileTableE[,4], method='spearman') cor.test(midpointAges, limitedmobileTableE[,4], method='spearman') cor.test(midpointAges, mobileTableE[,4], method='spearman') #Spearman's rank correlation tests for South America Cluster cor.test(midpointAges, sinfaunalTableE[,5], method='spearman') cor.test(midpointAges, dinfaunalTableE[,5], method='spearman') cor.test(midpointAges, epifaunalTableE[,5], method='spearman') cor.test(midpointAges, freelivingTableE[,5], method='spearman') cor.test(midpointAges, cementedTableE[,5], method='spearman') cor.test(midpointAges, pedunculateTableE[,5], method='spearman') cor.test(midpointAges, sessileTableE[,5], method='spearman') cor.test(midpointAges, limitedmobileTableE[,5], method='spearman') cor.test(midpointAges, mobileTableE[,5], method='spearman')