软件包“ 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
我正在寻找一种快速简便的方法来将其转换为“费率表”。我搜索了很多,但什么也没发现……有人吗?
最佳答案
刚刚结束这个话题,我找到了一个解决方案:
创建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))}
使用joinrate()联接5个费率表以创建完整的费率表,该表现在包括第4维(年龄,性别,年&seifa)。
FULLrateTable <- joinrate(list(SEIFA1=SEIFA1, SEIFA2=SEIFA2, SEIFA3=SEIFA3, SEIFA4=SEIFA4, SEIFA5=SEIFA5),dim.name="SEIFA")