tvCox: Time-varying regression data representation

Description Usage Arguments Author(s) Examples

View source: R/reformatFns.R

Description

Time-dependent hazard long array representation of time-to-event data.

Usage

1
tvCox(survData, covariates, type)

Arguments

survData
covariates

vector of covariate names (column headings) in survData.

type

which model to use, cause-specific or subdistribution (Fine & Gray)

Author(s)

N Green

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function (survData, covariates, type) 
{
    if (type == "alive") {
        time <- survData$time2disch
    }
    else if (type == "death") {
        time <- survData$time2death
    }
    else if (type == "") {
        time <- survData$time
    }
    rows.inf <- survData$infstatus == 1
    survData.inf <- survData[rows.inf, ]
    survData.mix <- survData[!rows.inf, ]
    ninf <- rep(1:nrow(survData.inf), each = 2)
    epsilon <- 0.5
    time.inf <- time[rows.inf]
    time.mix <- time[!rows.inf]
    originalid <- 0
    tvdata.inf <- data.frame(id = ninf, tstart = NA, tstop = NA, 
        inf = NA, disch = NA, death = NA, survData.inf[ninf, 
            c("infstatus", covariates)])
    numRows.new <- nrow(tvdata.inf)
    if (numRows.new > 0) {
        for (i in seq(1, numRows.new, by = 2)) {
            originalid <- originalid + 1
            spectime <- survData.inf$spectime[originalid]
            time.inf.id <- time.inf[originalid]
            tvdata.inf[i, "tstart"] <- 0
            tvdata.inf[i, "tstop"] <- ifelse(spectime == 0, epsilon, 
                spectime)
            tvdata.inf[i, "disch"] <- 0
            tvdata.inf[i, "inf"] <- 0
            tvdata.inf[i, "death"] <- 0
            tvdata.inf[i + 1, "tstart"] <- tvdata.inf[i, "tstop"]
            tvdata.inf[i + 1, "tstop"] <- ifelse(time.inf.id == 
                spectime, time.inf.id + epsilon, time.inf.id)
            tvdata.inf[i + 1, "disch"] <- (1 - as.numeric(survData.inf$event[originalid])) & 
                survData.inf$missingType[originalid]
            tvdata.inf[i + 1, "inf"] <- 1
            tvdata.inf[i + 1, "death"] <- unlist(survData.inf$event[originalid]) & 
                survData.inf$missingType[originalid]
        }
    }
    tvdata.mix <- data.frame(id = originalid + 10 + seq_along(survData.mix$time), 
        tstart = 0, tstop = ifelse(time.mix > 0, time.mix, epsilon), 
        inf = 0, disch = (1 - as.numeric(survData.mix[, "event"])) & 
            survData.mix[, "missingType"], death = unlist(survData.mix[, 
            "event"]) & survData.mix[, "missingType"], survData.mix[, 
            c("infstatus", covariates)])
    tvdata <- rbind(tvdata.inf, tvdata.mix)
    tvdata <- cbind(tvdata, status = tvdata$disch + (2 * tvdata$death))
    tvdata <- tvdata[!is.na(tvdata[, "tstop"]), ]
    names(tvdata)[which(names(tvdata) == "gender")] <- "sex"
    names(tvdata)[which(names(tvdata) == "infstatus")] <- "originf"
    tvdata
  }

n8thangreen/HESmanip documentation built on March 21, 2020, 12:20 a.m.