我正在研究这个数据集:
dat<-read.table(text = "Sample Pho Spec
1 FagS Lic1
2 FagS Lic1
3 FagS Lic2
5 QueP Lic2
6 QueP Lic1
7 FagS Lic1
8 FraE Lic3
9 FraE Lic4, header=T)
我会通过phorophytes(Pho)了解物种(Spec)的多样性,并且能够通过比较Pho的SpecDiv和Pho的样品量(NuOfSa)来思考这些信息。
示例:
Pho SpecDiv NuOfSa Ratio
FagS 2 4 0.5
QueP 2 2 1
FraE 2 2 1
目标是通过&#34; barplot&#34;绘制此信息。为了比较phorophytes之间的物种多样性。
非常感谢您的帮助;)
R上。
答案 0 :(得分:2)
这将是一个基本解决方案(在替换示例代码中缺少的双引号后):
temp <- cbind( SpecDiv= rowSums( with(dat, table( Pho, Spec))>0 ),
NuOfSa=with(dat, table( Pho)))
final <- cbind( temp, ratio=temp[,1]/temp[,2])
final
#--------
SpecDiv NuOfSa ratio
FagS 2 4 0.5
FraE 2 2 1.0
QueP 2 2 1.0
最困难的部分是通过phorophytes(Pho)来确定短语“specie(Spec)多样性”的含义。在未来,您应该更彻底地解释您的域特定约定,以便非生态学家能够提供更好的帮助。将好的数据折叠到现在或不存在的概念似乎导致严重丢失数据,以便我理解统计观点。我怀疑在观察集中是否“偶尔”(用“鸟”的语言)确实有资格增加“物种多样性”。
绘图任务等待<what>
的更好描述将针对<what>
绘制。
答案 1 :(得分:1)
我们可以使用setDT(dat)
。将'data.frame'转换为'data.table'(length
),按“Pho”分组,我们得到unique
“Spec”的uniqueN
(.N
)和行数(library(data.table)
setDT(dat)[,list(SpecDiv=uniqueN(Spec), NuOfSa=.N) ,
Pho][, ratio:= SpecDiv/NuOfSa][]
# Pho SpecDiv NuOfSa ratio
#1: FagS 2 4 0.5
#2: QueP 2 2 1.0
#3: FraE 2 2 1.0
),然后通过将一个除以另一个来获得“比率”
for loop