我希望能得到一些帮助。我正在构建一个生命表,不是为了保险,而是为了生态学(任何种类的野生动物群的横截面),所以基本上审查变量,如吸烟者/非吸烟者,怀孕,性别,健康状况,等:
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
我找到this和this,我不确定他们是否回答了我的问题,因为这些人根据群体减去了值。我只是想按行减去值。
另外,正如旁注:我做了一个for()来获得每个年龄组中幸存的比例。我想知道是否有另一种方法可以做到这一点,或者这是否是最合适,最简单的方法。
第二个注意事项:如果有任何R用户知道更简单的生态表生态表,请告诉我!
谢谢!
答案 0 :(得分:1)
如果您有包含数字的向量x
,则可以使用diff
函数计算差异。
在你的情况下,它将是
LifeTab1$DeathInt <- c(-diff(Sample), NA)