我在此处发布的问题与另一个question I posted two days ago about gompertz aging analysis.
密切相关我正在尝试构建一个生存对象,参见?Surv,在R.这有望用于执行Gompertz分析以产生两个值的输出(有关详细信息,请参阅原始问题)。
我从苍蝇实验中获得了生存数据,该实验检查了各种基因型的衰老率。我可以通过多种布局获取数据,因此您可以选择最适合您的答案。
一个数据帧(wide.df)看起来像这样,其中每个基因型(Exp,其中有~640)有一行,并且日期从第4天到第98天水平顺序运行,每个新死亡数量两天。
Exp Day4 Day6 Day8 Day10 Day12 Day14 ...
A 0 0 0 2 3 1 ...
我使用这个做例子:
wide.df2<-data.frame("A",0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2)
colnames(wide.df2)<-c("Exp","Day4","Day6","Day8","Day10","Day12","Day14","Day16","Day18","Day20","Day22","Day24","Day26","Day28","Day30","Day32","Day34","Day36")
另一个版本是这样的,每个“Exp”每天都有一行,并记录当天的死亡人数。
Exp Deaths Day
A 0 4
A 0 6
A 0 8
A 2 10
A 3 12
.. .. ..
举个例子:
df2<-data.frame(c("A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"),c(0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2),c(4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36))
colnames(df2)<-c("Exp","Deaths","Day")
每种基因型都有大约50只苍蝇。我现在需要帮助的是如何从上述数据框之一转到工作生存对象。这个对象是什么样的?我如何顺利地从上面到生存对象?
答案 0 :(得分:4)
注意到Deaths
的总数是55,你说苍蝇的数量是“大约50”,我认为可能的假设是这是一个完全观察到的过程。因此,您需要复制重复的死亡,因此每次死亡都有一行,并指定事件标记为1.“长”格式显然是首选格式。然后,您可以使用“日期”和“事件”
Surv
- 对象
?Surv
df3 <- df2[rep(rownames(df2), df2$Deaths), ]
str(df3)
#---------------------
'data.frame': 55 obs. of 3 variables:
$ Exp : Factor w/ 1 level "A": 1 1 1 1 1 1 1 1 1 1 ...
$ Deaths: num 2 2 3 3 3 1 3 3 3 4 ...
$ Day : num 10 10 12 12 12 14 16 16 16 18 ...
#----------------------
df3$event=1
str(with(df3, Surv(Day, event) ) )
#------------------
Surv [1:55, 1:2] 10 10 12 12 12 14 16 16 16 18 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:2] "time" "status"
- attr(*, "type")= chr "right"
注意:如果在coxph
函数中执行此操作,则可能不需要扩展到各个日期行,因为该函数允许指定大小写权重。 (我猜测生存包中的其他回归函数也不需要这样做。)过去,Terry Therneau表达了人们在{{1}的公式界面之外创建Surv对象的困惑。 }。没有详细描述htis Surv-object的预期用途,以了解是否可以进行无扩展的加权分析。