splitLexisDT {popEpi} | R Documentation |
Split case-level observations
Description
Split a Lexis
object along one time scale
(as splitLexis
) with speed
Usage
splitLexisDT(lex, breaks, timeScale, merge = TRUE, drop = TRUE)
Arguments
lex |
a Lexis object, split or not |
breaks |
a vector of |
timeScale |
a character string; name of the time scale to split by |
merge |
logical; if |
drop |
logical; if |
Details
splitLexisDT
is in essence a data.table version of
splitLexis
or survSplit
for splitting along a single
time scale. It requires a Lexis object as input, which may have already
been split along some time scale.
Unlike splitLexis
, splitLexisDT
drops observed time outside
the roof and floor of breaks
by default - with drop = FALSE
the functions have identical behaviour.
The Lexis
time scale variables can be of any arbitrary
format, e.g. Date
,
fractional years (see cal.yr
) and get.yrs
,
or other. However, using date
variables (from package date)
are not recommended, as date
variables are always stored as integers,
whereas Date
variables (see ?as.Date
) are typically stored
in double ("numeric") format. This allows for breaking days into fractions
as well, when using e.g. hypothetical years of 365.25 days.
Value
A data.table
or data.frame
(depending on options("popEpi.datatable")
; see ?popEpi
)
object expanded to accommodate split observations.
Author(s)
Joonas Miettinen
See Also
Other splitting functions:
lexpand()
,
splitMulti()
Examples
library(Epi)
data("sire", package = "popEpi")
x <- Lexis(data=sire[1000:1100, ],
entry = list(fot=0, per=get.yrs(dg_date), age=dg_age),
exit=list(per=get.yrs(ex_date)), exit.status=status)
BL <- list(fot=seq(0, 5, by = 3/12), per=c(2008, 2013))
x2 <- splitMulti(x, breaks = BL, drop = FALSE)
x3 <- splitLexisDT(x, breaks = BL$fot, timeScale = "fot", drop = FALSE)
x3 <- splitLexisDT(x3, breaks = BL$per, timeScale = "per", drop = FALSE)
x4 <- splitLexis(x, breaks = BL$fot, time.scale = "fot")
x4 <- splitLexis(x4, breaks = BL$per, time.scale = "per")
## all produce identical results
## using Date variables
x <- Lexis(data=sire[1000:1100, ],
entry = list(fot=0, per=dg_date, age=dg_date-bi_date),
exit=list(per=ex_date), exit.status=status)
BL <- list(fot = 0:5*365.25, per = as.Date(c("2008-01-01", "2013-01-01")))
x2 <- splitMulti(x, breaks = BL, drop = FALSE)
x3 <- splitLexisDT(x, breaks = BL$fot, timeScale = "fot", drop = FALSE)
x3 <- splitLexisDT(x3, breaks = BL$per, timeScale = "per", drop = FALSE)
## splitLexis may not work when using Dates