R: Cut follow-up at multiple event dates and keep track of order...

mcutLexis {Epi} | R Documentation

## Cut follow-up at multiple event dates and keep track of order of events

### Description

A generalization of `cutLexis` to the case where different events may occur in any order (but at most once for each).

### Usage

    mcutLexis( L0, timescale = 1, wh,
                  new.states = NULL,
            precursor.states = NULL,
                  seq.states = TRUE,
                  new.scales = NULL,
                ties.resolve = FALSE )

### Arguments

`L0` | A Lexis object.
`timescale` | Which time scale do the variables in `L0[,wh]` refer to. Can be character or integer.
`wh` | Which variables contain the event dates. Character or integer vector
`new.states` | Names of the events forming new states. If `NULL` equal to the variable names from `wh`.
`precursor.states` | Which states are precursor states. See `cutLexis` for definition of precursor states.
`seq.states` | Should the sequence of events be kept track of? That is, should A-B be considered different from B-A. If `FALSE`, the state with combined preceding events A and B will be called A+B (alphabetically sorted). May also be supplied as character: `s` - sequence, keep track of sequence of states occupied (same as `TRUE`), `u` - unordered, keep track only of states visited (same as `FALSE`) or `l`, `c` - last or current state, only record the latest state visited. If given as character, only the first letter converted to lower case is used.
`new.scales` | Should we construct new time scales indicating the time since each of the event occurrences.
`ties.resolve` | Should tied event times be resolved by adding random noise to tied event dates. If `FALSE` the function will not accept that two events occur at the same time for a person (ties). If `TRUE` a random quantity in the range `c(-1,1)/100` will be added to all event times in all records with at least one tie. If `ties.resolve` is numeric a random quantity in the range `c(-1,1)*ties.resolve` will be added to all event times in all records with at least one tie.

### Value

A `Lexis` object with extra states created by occurrence of a number of intermediate events.

### Author(s)

Bendix Carstensen, http://BendixCarstensen.com

### See Also

`cutLexis`, `addCov.Lexis`, `Lexis`, `splitLexis`

### Examples

    # A dataframe of times
    set.seed(563248)
    dd <- data.frame( id = 1:10,
                     doN = round(runif(10,-30, 0),1),
                     doE = round(runif(10,  0,20),1),
                     doX = round(runif(10, 50,60),1),
                     doD = round(runif(10, 50,60),1),
                     # these are the event times
                     doA = c(NA,20,NA,27,35,NA,52, 5,43,80),
                     doB = c(25,NA,37,40,NA,NA,15,23,36,61) )

    # set up a Lexis object with time from entry to death/exit
    Lx <- Lexis( entry = list(time=doE,
                               age=doE-doN),
                  exit = list(time=pmin(doX,doD)),
           exit.status = factor(doD<doX,labels=c("OK","D")),
                  data = dd )
    summary( Lx )

    # cut the follow-up at dates doA and doB
    L2 <- mcutLexis( Lx, "time", wh=c("doA","doB"),
                     new.states = c("A","B"),
               precursor.states = "OK",
                     seq.states = TRUE,
                     new.scales = c("tfA","tfB") )
    summary( L2 )
    L2

    # show the states
    boxes( L2, boxpos=list(x=c(10,50,50,90,50,90),
                           y=c(50,90,50,90,10,10)),
               show.R=FALSE, show.BE=TRUE )

    L3 <- mcutLexis( Lx, "time", wh=c("doA","doB"),
                     new.states = c("A","B"),
               precursor.states = "OK",
                     seq.states = FALSE,
                     new.scales = c("tfA","tfB") )
    summary( L3 )
    boxes( L3, boxpos=list(x=c(10,50,50,90,50),
                           y=c(50,90,50,50,10)),
               show.R=FALSE, show.BE=TRUE )

[Package Epi version 2.40 Index]