Add covariates (typically clinical measurements) taken at known times to a Lexis object.
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")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 ( |
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
# 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" )
# Works with time split BEFORE
Lb <- addCov.Lexis(splitLexis(Lx,
time.scale="age",
breaks=seq(0,80,5) ),
clin,
exnam="clX" )
Lb
# and also AFTER
La <- splitLexis(addCov.Lexis( Lx,
clin,
exnam = "xnam" ),
breaks=seq(0,80,5),
time.scale="age" )
La
La$tfc == Lb$tfc
La$age == Lb$age
str(La)
str(Lb)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.