减去前几行的值:生态生命表构建

Subtracting Values in Previous Rows: Ecological Lifetable Construction

我希望能得到一些帮助。我正在构建一种生活 table,不是为了保险,而是为了生态(任何一种野生动物种群的横截面),所以基本上审查 smoker/non-smoker、怀孕、性别等变量,健康状况等:

AgeClass=C(1,2,3,4,5,6)
SampleSize=c(100,99,87,46,32,19)
for(i in 1:6){
+ PropSurv=c(Sample/100)
+ }
> LifeTab1=data.frame(cbind(AgeClass,Sample,PropSurv))

这给了我这个:

ID  AgeClas  Sample  PropSurv
1    1       100       1.00
2    2        99       0.99
3    3        87       0.87
4    4        46       0.46
5    5        32       0.32
6    6        19       0.19

我现在正在尝试计算每行 (DeathInt) 中死亡的人数,方法是将幸存者的初始人数减去它下面的数字(即 100-99,然后是 99- 87,然后是 87-46,依此类推)。并尝试看起来像这样:

ID  AgeClas   Sample   PropSurv  DeathInt
 1     1       100       1.00       1
 2     2        99       0.99       12
 3     3        87       0.87       41
 4     4        46       0.46       14
 5     5        32       0.32       13
 6     6        19       0.19       NA

我找到了 and this,我不确定他们是否回答了我的问题,因为这些人根据组减去值。我只是想按行减去值。

另外,作为旁注:我做了一个 for() 来获得每个年龄组的存活比例。我想知道是否有另一种方法可以做到这一点,或者那是否是正确、最简单的方法。

第二个注意事项:如果有任何 R 用户知道更简单的生活方式-table 生态,请告诉我!

谢谢!

如果您有一个包含数字的向量 x,您可以使用 diff 函数计算差值。

你的情况是

LifeTab1$DeathInt <- c(-diff(Sample), NA)