R;制作用于相对生存分析的费率表

问题描述 投票:2回答:2

软件包“ relsurv”可以计算相对生存。输入的是您的数据(在我的情况下,被诊断为大肠癌的患者),然后是费率表,其中包括存活率到下一年龄段的变化,通常按性别和诊断年份来划分。

就我而言,我希望根据年龄,性别,诊断年份和社会经济得分来获得相对生存率。我已经将所有数据放入1个数据框中的费率表中:

   > head(lifetable)
     sex  seifa age      2007      2008      2009      2010      2011      2012      2013
1 female SEIFA1   0 0.9947100 0.9953400 0.9956200 0.9959200 0.9964100 0.9966000 0.9966800
2 female SEIFA1   1 0.9996625 0.9996613 0.9997038 0.9996489 0.9996425 0.9996667 0.9997556
3 female SEIFA1   2 0.9997750 0.9997968 0.9998105 0.9998119 0.9998350 0.9998167 0.9998656
4 female SEIFA1   3 0.9998375 0.9998374 0.9998460 0.9998621 0.9998625 0.9998667 0.9999022
5 female SEIFA1   4 0.9998750 0.9998645 0.9998697 0.9998871 0.9998900 0.9999000 0.9999267
6 female SEIFA1   5 0.9998827 0.9999077 0.9998887 0.9998956 0.9999037 0.9999160 0.9999280

我正在寻找一种快速简便的方法来将其转换为“费率表”。我搜索了很多,但什么也没发现……有人吗?

r
2个回答
3
投票

刚刚结束本主题,我找到了一个解决方案:

  1. 创建5个标准费率表(按年龄,性别,年),每个seifa类别一个。
   for (i in seq_along(levels(lifetable$seifa))){         # Create standard ratetables (by age,sex,year) for each seifa category
   lt_ss_f <- subset(lifetable, seifa == paste("SEIFA", i, sep="") & sex =="female"); lt_ss_f <- lt_ss_f[-c(1:3)]; lt_ss_f <- as.matrix(lt_ss_f)    
   lt_ss_m <- subset(lifetable, seifa == paste("SEIFA", i, sep="") & sex =="male")  ; lt_ss_m <- lt_ss_m[-c(1:3)]; lt_ss_m <- as.matrix(lt_ss_m)     
   assign(paste("SEIFA", i, sep=""),  transrate(lt_ss_m,lt_ss_f, yearlim=c(2003,2013), int.length=1))} 
  1. [使用joinrate()加入5个费率表以创建完整的费率表,该表现在包括第4维(年龄,性别,年和年龄)。
FULLrateTable <- joinrate(list(SEIFA1=SEIFA1, SEIFA2=SEIFA2, SEIFA3=SEIFA3, SEIFA4=SEIFA4, SEIFA5=SEIFA5),dim.name="SEIFA") 

0
投票

谢谢您的解决方案。它对我有很大帮助。

© www.soinside.com 2019 - 2024. All rights reserved.