样方调查数据怎样转换成群落-物种矩阵?

图片

:spaa程序包的data2mat函数可将样方调查数据转换为矩阵,用于计算生物多样性指数 (http://blog.sciencenet.cn/blog-255662-310032.html),但是data2mat只能处理个体数为整数的情况。如果要处理的数据是小数, 该怎么办?

:请参照以下的例子,用reshape2的acast函数转换。下面的R代码先将spaa程序包内置的datasample数据集转换为调查用的长格式,再将长格式转换为矩阵格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library(reshape2)library(spaa)
data(datasample)# melt需要将行名作为data.frame中的一列datasample2 <- cbind(plot = row.names(datasample), datasample)# 将修改后的matrix转换为数据记录的常用格式aaa <- melt(data = datasample2,
id.vars = "plot",
measure.vars = 2:ncol(datasample2),
variable.name = "species",
value.name = "abundance",
factorsAsStrings = TRUE)# 因有些样方中物种没有出现, 所以是0.00aaa1 <- aaa[aaa$abundance > 0, ]
head(aaa1)
## plot species abundance
## 1 1 Castanopsis.eyrei 25.58
## 2 2 Castanopsis.eyrei 28.41
## 3 3 Castanopsis.eyrei 39.43
## 4 4 Castanopsis.eyrei 11.53
## 5 5 Castanopsis.eyrei 35.01
## 6 6 Castanopsis.eyrei 51.34
# 将长数据转换为矩阵格式,行(row)这里是plot,置于 ~ 之前, # 列(column)这里是species,置于 ~ 之后。 # value.var当然就是 abundance。# 缺失值用0补齐。bbb <- acast(aaa1,
formula = plot ~ species,
value.var = "abundance",
fill = 0)