【发布时间】:2017-03-14 06:17:05
【问题描述】:
我正在尝试为相机诱捕调查生成物种饱和度曲线。我有成千上万的观察结果,并且在 dplyr 中进行了大部分操作。
我有三个野外地点,有几个星期诱捕的不同动物物种的观察记录。在某些星期没有动物,在其他星期可能有不止一个物种。我想为每个站点生成一个单独的数字,以比较在连续几周的研究中遇到新物种的速度。一旦在该地区捕获了总物种多样性,这些对新物种的观察最终应该会饱和。一些现场站点可能比其他站点更快地饱和。
问题是我还没有找到一种方法来计算不同物种的数量来提供按时间计算的总数。下面是一个简单的虚拟数据集。
field_site<-c(rep("A",4),rep("B",4),rep("C",4))
week<-c(1,2,2,3,2,3,4,4,1,2,3,4)
animal<-c("dog","dog","cat","rabbit","dog","dog","dog","rabbit","cat","cat","rabbit","dog")
df<-as.data.frame(cbind(field_site,week,animal),head=TRUE)
我可以很容易地生成每周分组中独特物种的数量,例如
tbl_df(df)%>%
group_by(field_site,week) %>%
summarise(no_of_sp=n_distinct(animal))
但这对在接下来的几周内再次遇到某些物种这一事实并不敏感。我真正需要的是对不同物种的运行计数,从第 1 周开始逐行计算每个站点的独特物种,假设数据是通过从调查开始开始增加时间进行排序的。
在现场 A 的示例中,在研究过程中按周遇到的物种累积总数为:第 1 周 = 1 个物种,第 2 周 = 2 个物种,第 3 周 = 3 个物种,第 4 周 = 仍然是 3物种。
对于站点 B,物种的累计总数为:第 1 周 = 0 个物种,第 2 周 = 1 个物种,第 3 周 = 1 个物种,第 4 周 = 1 个物种,等等...
任何建议将不胜感激。 提前欢呼!
【问题讨论】:
-
站点 B 不是第 4 周 = 2 个物种,“狗”和“兔子”吗?
标签: r dplyr distinct-values cumulative-sum