r - 如何绘制R中这些列的物种丰富度与海拔高度?
问题描述
我是 R 的新手。我只是想让自己熟悉这种语言以备将来使用,并在处理和绘制数据方面寻求一些帮助。因此,我从 excel 中导入了具有一定数量列的数据,并且我希望绘制鸟类的物种丰富度与海拔高度的关系。两列中的数据如下所示:
Species Altitude (m)
Species A 100
Species B 100
Species C 100
Species D 100
Species E 100
Species C 200
Species D 200
Species E 200
Species A 300
Species C 300
Species D 300
Species E 300
Species B 400
Species E 400
Species B 500
Species D 500
我的问题是我将如何操纵数据来总结在每个高度发现的物种数量并将其呈现为一个图而不使用 ggplot2?谢谢。
解决方案
您可以使用该函数aggregate()
按物种或海拔高度聚合数据集,使用任何现有函数或定义新函数。
在您的情况下,我将只使用该函数length()
进行聚合,因为它返回每个组中的案例数。如果您在一个高度有多个相同物种的计数,那么定义一个返回不同物种数量的函数可能是明智之举。
您还可以使用函数来计算物种的熵(如果您想获得多样性)或基尼系数(如果您想衡量优势)。
luniq = function(v){
return(length(unique(v)))
}
d = data.frame("Species"=c("Species A","Species B","Species C","Species D",
"Species E","Species C","Species D","Species E",
"Species A","Species C","Species D","Species E",
"Species B","Species E","Species B","Species B"),
"Altitude (m)"=c(100,100,100,100,
100,200,200,200,
300,300,300,300,
400,400,500,500))
agg1 = aggregate(d[["Species"]]~d[["Altitude..m."]],FUN=length)
agg2 = aggregate(d[["Species"]]~d[["Altitude..m."]],FUN=luniq)
d = data.frame("Number.Species"=agg1[,2],
"Number.Different"=agg2[,2],
row.names=agg[,1])
barplot(t(as.matrix(d)),beside=T,legend.text=names(d))
请注意,我更改了海拔 500 以包含同一物种的两个样本。所以,计数仍然是 2,但不同物种的数量是 1。
推荐阅读
- android - SplashScreen 这是正确的方法吗?
- c# - C# - 在 LINQ 求和方法中计算值时代码应该无法访问
- r - R studio 无法调试函数
- javascript - 雅虎 OAuth2 隐式授权流程不适用于新的雅虎应用
- excel - Excel Vlookup更改表格数组会提示错误
- c++ - C++ arduino 库返回具有不正确值的整数数组
- loops - 是否可以在Maxima中构造一个重复次数不确定的while循环
- tensorflow - 在 TensorFlow 中初始化 LSTM 隐藏状态
- c# - 调整控制器以将 JSON 对象返回为特定格式
- python - 类计数器初始化