在我开始之前,这里是我正在处理的数据的一小部分,我提前为它太大而道歉(注意这只是一个非常大的数据集的前 30 行:
mydata<-structure(list(ParkName = c("SEP", "CSSP",
"SEP", "ONF", "SEP",
"ONF", "SEP",
"CSSP", "ONF",
"SEP", "CSSP",
"PPRSP", "PPRSP",
"SEP", "ONF",
"PPRSP", "ONF",
"SEP", "SEP",
"ONF"),
Year = c(2001, 2005, 1998,2011, 1991, 1991, 1991, 1991, 1991, 1992, 1992, 1992, 1992, 1992,
1992, 1992, 1992, 1993, 1994, 1994),
LatinName = c("Mola mola", "Clarias batrachus", "Lithobates catesbeianus", "Rana catesbeiana", "Rana catesbeiana",
"Rana yellowis", "Rana catesbeiana", "Solenopsis sp1","Rana catesbeiana", "Rana catesbeiana",
"Pratensis", "Rana catesbeiana", "Rana catesbeiana", "sp2", "Orchidaceae",
"Rana catesbeiana","Formica", "Rana catesbeiana", "Rana catesbeiana", "sp2"),
NumTotal = c(1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 100, 2, 1, 2)), Names = c("ParkName", "Year", "LatinName",
"NumTotal"),
row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))
该数据集代表了多年来不同公园中不同物种的丰富度。我本质上想要用这些数据做的是获取记录数据的每年的物种 X 公园矩阵,然后使用“vegan”包来计算每年每个公园的多样性指数。显然,这不是一个平衡的数据集,因为并非每个公园每年都会记录物种丰度等。现在我意识到要做到这一点,我需要运行循环。我需要获取每年的公园列表以及每年每个公园的物种及其丰度列表,以便创建这些矩阵。在运行循环方面我并不是最擅长的,这个任务让我感到困惑。例如,我在数据集中创建了一个单独的年份向量。然后,我创建了一个名为“parkbyyear”的空列表,以从主数据框中按年份填充公园列表
year<-as.vector(unique(data[,3]))
parkbyyear<-NULL
for (i in 1:year) {
parkbyyear[i]<- mydata[mydata$ParkName[year == "i"]
}
循环无法运行。
任何帮助,将不胜感激。