Я не уверен, что это именно то, что вам нужно, но здесь я изменил ваши данные, чтобы каждая комбинация species
и age_class
рассматривалась как ваши переменные "вида", а годы - как "сайты" , Таким образом, вы получаете только одно возвращенное значение расстояния; а именно, различие между 2017 и 2019 годами:
library(vegan)
library(reshape2)
df <- structure(list(Species = structure(c(1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L), .Label = c("Native Fish", "Nonnative Fish"), class = "factor"),
Year = c(2017L, 2017L, 2019L, 2019L, 2017L, 2017L, 2019L,
2019L), Age_Class = structure(c(2L, 1L, 2L, 1L, 2L, 1L, 2L,
1L), .Label = c("Adult", "Juvenile"), class = "factor"),
CPUE = c(0.015384615, 0.015384615, 1.164921466, 0.018324607,
0.638461538, 0.541025641, 0.479057592, 0.602094241)),
class = "data.frame", row.names = c(NA,
-8L))
df$code <- paste(gsub(pattern = " ", replacement = "_", x = df$Species),
df$Age_Class, sep = ".")
df2 <- dcast(data = df, formula = Year ~ code, fun.aggregate = sum,
value.var = "CPUE")
df2
# Year Native_Fish.Adult Native_Fish.Juvenile Nonnative_Fish.Adult Nonnative_Fish.Juvenile
# 1 2017 0.01538462 0.01538462 0.5410256 0.6384615
# 2 2019 0.01832461 1.16492147 0.6020942 0.4790576
dim(df2)
D <- vegdist(x = df2, method = "bray")
D
# 1
# 2 0.000834997