r - R:对每一列求和,平均覆盖值和相对平均覆盖值
问题描述
我有一个数据框,其中包含多个地块中许多植物物种的百分比覆盖数据:
例子
sp1 sp2 sp3 sp4
PlotA 1 12 0 0
PlotB 0 3 5 0
PlotC 3 0 0 1
PlotD 0 6 0 0
PlotE 1 1 0 0
我想为每个单独的物种/列计算一些东西:
每个物种有多少块地?(例如 sp1 = 3,sp2 = 4,sp3 = 1)
什么是平均 pct。每个地块每个物种的覆盖率?(总覆盖/总地块,例如 sp1 = 1.0,sp2 = 4.4)
什么是相对平均值。百分比。每个地块每个物种的覆盖率?(平均 pct 覆盖率/所有平均 pct 覆盖率的总和)
将物种设为行,将地块设为列,是否会更容易实现这一点?
解决方案
没有包的解决方案,使用 colSums 和 colMeans
数据:
df = data.frame(sp1 = c(1,0,3,0,1),
sp2 = c(12,3,0,6,1),
sp3 = c(0,5,0,0,0),
sp4 = c(0,0,1,0,0),
row.names = paste("Plot",c("A","B","C","D","E"),sep=""))
问题 :
# question 1
pres = colSums(apply(df,2,function(x) x>0))
# question 2
pct = colMeans(df)
# question 3
rlt = pct/sum(pct)*100
df2 = data.frame(pres,pct,rlt)
df2
# pres pct rlt
# sp1 3 1.0 15.151515
# sp2 4 4.4 66.666667
# sp3 1 1.0 15.151515
# sp4 1 0.2 3.030303
t()
通常在生态中,我们将个体排成一行,但是如果您需要,这种转换很容易通过功能实现。
推荐阅读
- python - arcpy出错后重启python脚本,直到成功
- ruby-on-rails - Rails - 如何分配用户版主权限?
- emacs - elisp:在回显区域输出彩色消息
- arduino - 我想使用 TM4C123 TIVA C LaunchPad 作为 ICSP Arduino 程序员
- ios - 检查用户是否登录到 App Store?对象 iOS
- azure-devops - 发布或环境部署前的 VSTS 变量提示
- customization - 从自助服务选项卡访问时,创建用户任务流中的按钮损坏
- square-connect - 在 Salesforce 中使用 Square 和 XMLHttpRequest 或 JQuery Ajax 来发布交易
- django - django收集静态不起作用
- html - 两列包含不同高度的垂直居中 div 的 div