split.Lexis {Epi}R Documentation

Split follow-up time in a Lexis object

Description

The splitLexis function divides each row of a Lexis object into disjoint follow-up intervals according to the supplied break points.

Usage

splitLexis(lex, breaks)

Arguments

lex an object of class Lexis
breaks a named list of numeric vectors giving the break points on one or more time scales. Optionally, a single vector of break points may be given, in which case the first time scale is assumed.

Value

An object of class Lexis with multiple rows for each row of the argument lex. Each row of the new Lexis object contains the part of the follow-up interval that falls inside one of the time bands defined by the break points.
The variables representing the various time scales, are appropriately updated in the new Lexis object. The entry and exit status variables are also updated according to the rule that the entry status is retained until the end of follow-up. All other variables are considered to represent variables that are constant in time, and so are replicated across all rows having the same id value.

Author(s)

Martyn Plummer

See Also

timeBand

Examples

# A small bogus cohort
xcoh <- structure( list( id = c("A", "B", "C"),
                      birth = c("14/07/1952", "01/04/1954", "10/06/1987"),
                      entry = c("04/08/1965", "08/09/1972", "23/12/1991"),
                       exit = c("27/06/1997", "23/05/1995", "24/07/1998"),
                       fail = c(1, 0, 1) ),
                     .Names = c("id", "birth", "entry", "exit", "fail"),
                  row.names = c("1", "2", "3"),
                      class = "data.frame" )

# Convert the character dates into numerical variables (fractional years)
xcoh$bt <- cal.yr( xcoh$birth, format="%d/%m/%Y" )
xcoh$en <- cal.yr( xcoh$entry, format="%d/%m/%Y" )
xcoh$ex <- cal.yr( xcoh$exit , format="%d/%m/%Y" )

# See how it looks
xcoh

# Define as Lexis object with timescales calendar time and age
Lcoh <- Lexis( entry = list( per=en ),
                exit = list( per=ex, age=ex-bt ),
         exit.status = fail,
                data = xcoh )

# Default plot of follow-up
plot( Lcoh )
# With a grid and deaths as endpoints
plot( Lcoh, grid=0:10*10, col="black" )
points( Lcoh, pch=c(NA,16)[Lcoh$lex.status2+1] )
# With a lot of bells and whistles:
plot( Lcoh, grid=0:20*5, col="black", xaxs="i", yaxs="i",
      xlim=c(1960,2010), ylim=c(0,50), lwd=3, las=1 )
points( Lcoh, pch=c(NA,16)[Lcoh$lex.status2+1], col="red", cex=1.5 )

# Split time along two time-axes
( x2 <-
splitLexis( Lcoh, breaks = list( per = seq(1900,2000,5),
                                 age = seq(0,80,5) ) ) )

# Tabulate the cases and the person-years
tapply( x2$lex.status2, list( timeBand(x2,"age","left"),
                              timeBand(x2,"per","left") ), sum )
tapply( x2$lex.deltat,  list( timeBand(x2,"age","left"),
                              timeBand(x2,"per","left") ), sum )

[Package Epi version 0.9.0 Index]