生存::tmerge()给定为.Date.numeric(value)错误
我正试图收集一些数据来做一些生存分析,但我一直得到一个错误生存::tmerge()给定为.Date.numeric(value)错误,r,survival,R,Survival,我正试图收集一些数据来做一些生存分析,但我一直得到一个错误 library(survival) library(lubridate) df1 <- data.frame(id = "62103", hire.date = ymd("2016-05-16"), end.date = ymd(Sys.Date()) ) job <- data.frame(id = c("62103", "62103"),
library(survival)
library(lubridate)
df1 <- data.frame(id = "62103",
hire.date = ymd("2016-05-16"),
end.date = ymd(Sys.Date())
)
job <- data.frame(id = c("62103", "62103"),
job1 = c("level 1 coder", "level 2 coder"),
start.date = c(ymd("2016-05-16"), ymd("2017-05-16")),
end.date = c(ymd("2017-05-16"), NA)
)
df2 <- tmerge(df1, df1, id = id,
tstart = hire.date,
tstop = end.date)
df3 <- tmerge(df2, job, id = id,
job = tdc(start.date, job1)
)
tdc
功能是tmerge
功能的内部。下面是代码顶部的定义:
assign("tdc", function(time, value = NULL) {
x <- list(time = time, value = value)
class(x) <- "tdc"
x
}, envir = new)
我还怀疑,除了使用列名作为
tdc
的参数外,成功运行tmerge
还需要一个更大的示例。df2
示例只有一行数据,因此不清楚它是如何随时间变化的。我还注意到示例中似乎没有状态变量,而这是Therneau示例中的第一个操作:pbc2tdc
函数是tmerge
函数的内部。下面是代码顶部的定义:
assign("tdc", function(time, value = NULL) {
x <- list(time = time, value = value)
class(x) <- "tdc"
x
}, envir = new)
我还怀疑,除了使用列名作为
tdc
的参数外,成功运行tmerge
还需要一个更大的示例。df2
示例只有一行数据,因此不清楚它是如何随时间变化的。我还注意到,示例中似乎没有状态变量,而这是Therneau示例中的第一个操作:pbc2似乎tdc
的问题在于某些日期数学没有正确执行。将(前后?)转换为数字可以解决这个问题
library(survival)
library(lubridate)
library(tidyverse)
df1 <- data.frame(id = "62103",
hire.date = ymd("2016-05-16"),
end.date = ymd(Sys.Date())
) %>%
mutate_if(is.Date, as.numeric)
job <- data.frame(id = c("62103", "62103"),
job1 = c("level 1 stacker", "level 2 stacker"),
start.date = c(ymd("2016-05-16"), ymd("2017-05-16")),
end.date = c(ymd("2017-05-16"), NA)
)%>%
mutate_if(is.Date, as.numeric)
df2 <- tmerge(df1, df1, id = id,
tstart = hire.date,
tstop = end.date)
df3 <- tmerge(df2, job, id = id,
job = event(start.date, job1)
) %>%
mutate_if(is.numeric, as.Date, origin = "1970-01-01")
库(生存)
图书馆(lubridate)
图书馆(tidyverse)
df1%
如果(is.Date,as.numeric)发生变化
职位%
如果(is.Date,as.numeric)发生变化
df2tdc的问题似乎是某些日期数学没有正确执行。将(前后?)转换为数字可以解决这个问题
library(survival)
library(lubridate)
library(tidyverse)
df1 <- data.frame(id = "62103",
hire.date = ymd("2016-05-16"),
end.date = ymd(Sys.Date())
) %>%
mutate_if(is.Date, as.numeric)
job <- data.frame(id = c("62103", "62103"),
job1 = c("level 1 stacker", "level 2 stacker"),
start.date = c(ymd("2016-05-16"), ymd("2017-05-16")),
end.date = c(ymd("2017-05-16"), NA)
)%>%
mutate_if(is.Date, as.numeric)
df2 <- tmerge(df1, df1, id = id,
tstart = hire.date,
tstop = end.date)
df3 <- tmerge(df2, job, id = id,
job = event(start.date, job1)
) %>%
mutate_if(is.numeric, as.Date, origin = "1970-01-01")
库(生存)
图书馆(lubridate)
图书馆(tidyverse)
df1%
如果(is.Date,as.numeric)发生变化
职位%
如果(is.Date,as.numeric)发生变化
df2从您使用的包tdc
survival::tdc
我得到survival::tdc错误:“tdc”不是从“namespace:survival”导出的对象
我有ssame版本survival\u 2.44-1.1
让我们澄清一下!对于tdc(start.date,job)
你是说依赖时间的协变量是日期型的吗?我希望它是一个数字类型…嘿@VitaliAvagyan:依赖时间的协变量应该是字符串类型--在终止之前你做了什么工作?你使用了哪个包tdc
survival::tdc
我得到survival::tdc错误:“tdc”不是从“namespace:survival”导出的对象。
我有ssame版本survival_2.44-1.1
让我们澄清一下!对于tdc(start.date,job)
你是说依赖时间的协变量是日期型的吗?我希望它是一个数字类型…嘿@VitaliAvagyan:依赖时间的协变量应该是字符串类型——你在终止之前做过什么工作?这很有帮助!尽管如此,我认为start.date
是随时间变化的(它会变化一年),而job1
也会变化。(我正在更改示例中的名称,谢谢)。此外,小插曲中的例子显然只适用于一个人和两个时间相关协变量的观察。下面这个对我来说很好<代码>温度这很有帮助!尽管如此,我认为start.date
是随时间变化的(它会变化一年),而job1
也会变化。(我正在更改示例中的名称,谢谢)。此外,小插曲中的例子显然只适用于一个人和两个时间相关协变量的观察。下面这个对我来说很好<代码>温度