| addCov.Lexis {Epi} | R Documentation |
When follow-up in a multistate model is represented in a
Lexis object we may want to add information on
covariates, for example clinical measurements, obtained at different
times. This function cuts the follow-up time (see
cutLexis) at the times of measurement and carries the
measurements forward in time to the next measurement occasion.
## S3 method for class 'Lexis'
addCov( Lx,
clin,
timescale = 1,
exnam,
tfc = "tfc",
addScales = FALSE )
Lx |
A Lexis object with follow-up of a cohort. |
clin |
A data frame with covariates to add (typically clinical
measurements). Must contain a variable The times must be unique within each person; if not records with
duplicate times are discarded, and a warning issued. This is done
using |
timescale |
Numerical or character. Number or name of a timescale in
|
exnam |
Character. Name of the variable in |
tfc |
Character ( |
addScales |
Logical. Should timescales representing time since each examination time
time be added? They will be named |
The implementation is clumpy, the function is slow.
A Lexis object representing the same follow-up as Lx,
with cuts added at the times of examination, and covariate
measurements added for all records representing follow-up after the
most recent time of measurement.
Bendix Carstensen, b@bxc.dk, http://BendixCarstensen.com
cutLexis,
mcutLexis,
splitLexis,
Lexis
# A small bogus cohort
xcoh <- structure( list( id = c("A", "B", "C"),
birth = c("1952-07-14", "1954-04-01", "1987-06-10"),
entry = c("1965-08-04", "1972-09-08", "1991-12-23"),
exit = c("1997-06-27", "1995-05-23", "1998-07-24"),
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 )
xcoh$en <- cal.yr( xcoh$entry )
xcoh$ex <- cal.yr( xcoh$exit )
# 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 = factor( fail, 0:1, c("Alive","Dead") ),
data = xcoh )
str( Lcoh )
Lx <- Lcoh[,1:7]
# Data frame with clinical examination data, date of examination in per
clin <- data.frame( lex.id = c(1,1,3,2),
per = c(1977.3,1971.7,1996.2,1990.6),
bp = c(120,140,160,157),
chol = c(5,7,8,9),
xnam = c("X2","X1","X1","X2") )
Lx
clin
# Different behavours using exnam and addScales
addCov.Lexis( Lx, clin )
addCov.Lexis( Lx, clin, exnam="xnam" )
addCov.Lexis( Lx, clin, addScales=TRUE )
addCov.Lexis( Lx, clin, addScales=TRUE, exnam="xnam" )
# Works with time split BEFORE
Lb <- addCov.Lexis( splitLexis( Lx,
time.scale="age",
breaks=seq(0,80,5) ),
clin,
exnam="clX" )
Lb
# ...or AFTER, but only if addScales is given
La <- splitLexis( addCov.Lexis( Lx,
clin,
exnam = "xnam" ),
breaks=seq(0,80,5),
time.scale="age" )
La
La <- splitLexis( addCov.Lexis( Lx,
clin,
exnam = "xnam",
addScales = TRUE ),
breaks=seq(0,80,5),
time.scale="age" )
La