Find Previous Test Date for Subject
PreviousDate.Rd
get_prev_dates()
identifies the previous test date for individual subjects and timepoints
in a longitudinal study.
add_prev_date()
interpolates these previous test dates into a data frame for further analysis.
Usage
add_prev_date(
object,
subject = "subject",
timepoint = "timepoint",
result = "result"
)
get_prev_date(
object,
subject = "subject",
timepoint = "timepoint",
result = "result"
)
Arguments
- object
a
data.frame
(or object coercible byas.data.frame()
to a data frame) containing the data to be analysed.- subject
character
, name of the column (of typeinteger
orfactor
) identifying individual study subjects; default"subject"
.- timepoint
character
, name of the column recording time points (asDates
) of testing of subjects; default"timepoint"
.- result
character
, name of the column (of typeordered factor
) recording test results; default"result"
.
Value
add_prev_date()
A
data.frame
based onobject
, with an added column of classDate
containing the values of the previous test dates.get_prev_date()
An
vector
of lengthnrow(object)
, classDate
, containing the values of the previous test dates ordered in the exact sequence of thesubject
andtimepoint
inobject
.
Details
See Transitions
details.
See also
data.frame
, Dates
, ordered factor
.
Other transitions:
PreviousResult
,
Transitions
,
uniques()
Examples
## Continuing example from `add_transitions()`
# subject, timepoint and result arguments all defaults and required types
Blackmore |> str()
#> 'data.frame': 945 obs. of 6 variables:
#> $ subject : Factor w/ 231 levels "100","101","102",..: 1 1 1 1 1 2 2 2 2 2 ...
#> $ age : num 8 10 12 14 15.9 ...
#> $ exercise : num 2.71 1.94 2.36 1.54 8.63 0.14 0.14 0 0 5.08 ...
#> $ group : Factor w/ 2 levels "control","patient": 2 2 2 2 2 2 2 2 2 2 ...
#> $ timepoint: Date, format: "2008-01-01" "2009-12-31" ...
#> $ result : Ord.factor w/ 15 levels "<=2"<"<=4"<"<=6"<..: 2 1 2 1 5 1 1 1 1 3 ...
# Integer vector of the previous test dates
get_prev_date(Blackmore)
#> [1] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [6] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [11] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [16] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [21] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [26] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [31] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [36] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [41] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [46] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [51] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [56] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [61] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [66] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [71] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [76] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [81] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [86] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [91] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [96] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [101] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [106] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [111] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [116] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [121] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [126] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [131] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [136] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [141] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [146] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [151] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [156] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [161] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [166] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [171] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [176] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [181] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [186] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [191] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [196] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [201] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [206] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [211] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [216] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [221] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [226] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [231] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [236] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [241] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [246] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [251] "2014-01-01" NA "2008-01-01" "2009-12-31" NA
#> [256] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [261] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [266] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [271] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [276] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [281] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [286] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [291] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [296] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [301] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [306] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [311] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [316] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [321] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [326] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [331] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [336] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [341] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [346] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [351] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [356] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [361] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [366] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [371] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [376] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [381] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [386] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [391] "2012-01-01" NA "2008-01-01" "2009-12-31" NA
#> [396] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [401] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [406] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [411] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [416] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [421] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [426] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [431] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [436] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [441] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [446] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [451] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [456] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [461] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [466] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [471] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [476] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [481] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [486] "2009-12-31" NA "2008-01-01" "2009-12-31" NA
#> [491] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [496] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [501] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [506] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [511] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [516] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [521] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [526] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [531] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [536] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [541] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [546] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [551] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [556] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [561] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [566] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [571] "2012-01-01" NA "2008-01-01" "2009-12-31" NA
#> [576] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [581] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [586] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [591] "2014-01-01" NA "2008-01-01" "2009-12-31" NA
#> [596] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [601] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [606] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [611] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [616] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [621] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [626] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [631] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [636] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [641] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [646] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [651] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [656] "2009-12-31" NA "2008-01-01" "2009-12-31" NA
#> [661] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [666] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [671] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [676] "2009-12-31" NA "2008-01-01" NA "2008-01-01"
#> [681] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [686] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [691] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [696] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [701] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [706] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [711] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [716] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [721] "2014-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [726] "2014-01-01" NA "2008-01-01" "2009-12-31" NA
#> [731] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [736] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [741] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [746] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [751] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [756] "2009-12-31" NA "2008-01-01" "2009-12-31" NA
#> [761] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [766] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [771] "2009-12-31" "2012-01-01" "2014-01-01" NA "2008-01-01"
#> [776] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [781] "2012-01-01" NA "2008-01-01" "2009-12-31" NA
#> [786] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [791] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [796] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [801] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
#> [806] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [811] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [816] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [821] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [826] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [831] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [836] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [841] "2009-12-31" NA "2008-01-01" "2009-12-31" NA
#> [846] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [851] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [856] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [861] "2012-01-01" NA "2008-01-01" "2009-12-31" NA
#> [866] "2008-01-01" "2009-12-31" "2012-01-01" NA "2008-01-01"
#> [871] "2009-12-31" "2012-01-01" NA "2008-01-01" "2009-12-31"
#> [876] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [881] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [886] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [891] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [896] "2012-01-01" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [901] NA "2008-01-01" "2009-12-31" NA "2008-01-01"
#> [906] "2009-12-31" NA "2008-01-01" "2009-12-31" "2012-01-01"
#> [911] NA "2008-01-01" "2009-12-31" "2012-01-01" NA
#> [916] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [921] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [926] "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01" NA
#> [931] "2008-01-01" "2009-12-31" NA "2008-01-01" "2009-12-31"
#> [936] "2012-01-01" "2014-01-01" NA "2008-01-01" "2009-12-31"
#> [941] NA "2008-01-01" "2009-12-31" "2012-01-01" "2014-01-01"
# Add column of previous test dates to data frame
add_prev_date(Blackmore) |> head(32)
#> subject age exercise group timepoint result prev_date
#> 1 100 8.00 2.71 patient 2008-01-01 <=4 <NA>
#> 2 100 10.00 1.94 patient 2009-12-31 <=2 2008-01-01
#> 3 100 12.00 2.36 patient 2012-01-01 <=4 2009-12-31
#> 4 100 14.00 1.54 patient 2014-01-01 <=2 2012-01-01
#> 5 100 15.92 8.63 patient 2015-12-03 <=10 2014-01-01
#> 6 101 8.00 0.14 patient 2008-01-01 <=2 <NA>
#> 7 101 10.00 0.14 patient 2009-12-31 <=2 2008-01-01
#> 8 101 12.00 0.00 patient 2012-01-01 <=2 2009-12-31
#> 9 101 14.00 0.00 patient 2014-01-01 <=2 2012-01-01
#> 10 101 16.67 5.08 patient 2016-09-02 <=6 2014-01-01
#> 11 102 8.00 0.92 patient 2008-01-01 <=2 <NA>
#> 12 102 10.00 1.82 patient 2009-12-31 <=2 2008-01-01
#> 13 102 12.00 4.75 patient 2012-01-01 <=6 2009-12-31
#> 14 102 15.08 24.72 patient 2015-01-30 <=26 2012-01-01
#> 15 103 8.00 1.04 patient 2008-01-01 <=2 <NA>
#> 16 103 10.00 2.90 patient 2009-12-31 <=4 2008-01-01
#> 17 103 12.00 2.65 patient 2012-01-01 <=4 2009-12-31
#> 18 103 14.08 6.86 patient 2014-01-30 <=8 2012-01-01
#> 19 104 8.00 2.75 patient 2008-01-01 <=4 <NA>
#> 20 104 10.00 6.62 patient 2009-12-31 <=8 2008-01-01
#> 21 104 12.00 0.29 patient 2012-01-01 <=2 2009-12-31
#> 22 104 15.42 12.37 patient 2015-06-03 <=14 2012-01-01
#> 23 105 8.00 0.05 patient 2008-01-01 <=2 <NA>
#> 24 105 10.00 0.00 patient 2009-12-31 <=2 2008-01-01
#> 25 105 12.00 0.00 patient 2012-01-01 <=2 2009-12-31
#> 26 105 14.00 0.25 patient 2014-01-01 <=2 2012-01-01
#> 27 105 16.17 1.44 patient 2016-03-03 <=2 2014-01-01
#> 28 106 8.00 0.00 patient 2008-01-01 <=2 <NA>
#> 29 106 10.00 0.46 patient 2009-12-31 <=2 2008-01-01
#> 30 106 12.00 0.12 patient 2012-01-01 <=2 2009-12-31
#> 31 106 14.00 1.34 patient 2014-01-01 <=2 2012-01-01
#> 32 106 16.33 4.83 patient 2016-05-01 <=6 2014-01-01
rm(Blackmore)
###
## Example on formatting numeric values as R dates
# Data frame containing year as numeric: 2018 to 2025
(df <- data.frame(
subject = rep(1001:1003),
timepoint = rep(2018:2025, each = 3),
result = gl(3, 4, lab = c("jolly", "good", "show"), ordered = TRUE)
))
#> subject timepoint result
#> 1 1001 2018 jolly
#> 2 1002 2018 jolly
#> 3 1003 2018 jolly
#> 4 1001 2019 jolly
#> 5 1002 2019 good
#> 6 1003 2019 good
#> 7 1001 2020 good
#> 8 1002 2020 good
#> 9 1003 2020 show
#> 10 1001 2021 show
#> 11 1002 2021 show
#> 12 1003 2021 show
#> 13 1001 2022 jolly
#> 14 1002 2022 jolly
#> 15 1003 2022 jolly
#> 16 1001 2023 jolly
#> 17 1002 2023 good
#> 18 1003 2023 good
#> 19 1001 2024 good
#> 20 1002 2024 good
#> 21 1003 2024 show
#> 22 1001 2025 show
#> 23 1002 2025 show
#> 24 1003 2025 show
# Convert to R dates
df <- transform(df,
timepoint = as.Date(paste(timepoint, "01", "01", sep = "-"))
)
# Add column of test result transitions (defaults: cap = 0, modulate = 0)
(df <- add_transitions(df))
#> subject timepoint result transition
#> 1 1001 2018-01-01 jolly NA
#> 2 1002 2018-01-01 jolly NA
#> 3 1003 2018-01-01 jolly NA
#> 4 1001 2019-01-01 jolly 0
#> 5 1002 2019-01-01 good 1
#> 6 1003 2019-01-01 good 1
#> 7 1001 2020-01-01 good 1
#> 8 1002 2020-01-01 good 0
#> 9 1003 2020-01-01 show 1
#> 10 1001 2021-01-01 show 1
#> 11 1002 2021-01-01 show 1
#> 12 1003 2021-01-01 show 0
#> 13 1001 2022-01-01 jolly -2
#> 14 1002 2022-01-01 jolly -2
#> 15 1003 2022-01-01 jolly -2
#> 16 1001 2023-01-01 jolly 0
#> 17 1002 2023-01-01 good 1
#> 18 1003 2023-01-01 good 1
#> 19 1001 2024-01-01 good 1
#> 20 1002 2024-01-01 good 0
#> 21 1003 2024-01-01 show 1
#> 22 1001 2025-01-01 show 1
#> 23 1002 2025-01-01 show 1
#> 24 1003 2025-01-01 show 0
# Format R dates just to show the year
transform(df, timepoint = format(timepoint, "%Y"))
#> subject timepoint result transition
#> 1 1001 2018 jolly NA
#> 2 1002 2018 jolly NA
#> 3 1003 2018 jolly NA
#> 4 1001 2019 jolly 0
#> 5 1002 2019 good 1
#> 6 1003 2019 good 1
#> 7 1001 2020 good 1
#> 8 1002 2020 good 0
#> 9 1003 2020 show 1
#> 10 1001 2021 show 1
#> 11 1002 2021 show 1
#> 12 1003 2021 show 0
#> 13 1001 2022 jolly -2
#> 14 1002 2022 jolly -2
#> 15 1003 2022 jolly -2
#> 16 1001 2023 jolly 0
#> 17 1002 2023 good 1
#> 18 1003 2023 good 1
#> 19 1001 2024 good 1
#> 20 1002 2024 good 0
#> 21 1003 2024 show 1
#> 22 1001 2025 show 1
#> 23 1002 2025 show 1
#> 24 1003 2025 show 0
# Data frame containing year and month as numeric: July 2024 to June 2025
(df <- data.frame(
subject = 1001:1002,
year = rep(2024:2025, each = 12),
month = rep(c(7:12, 1:6), each = 2),
result = gl(2, 3, lab = c("low", "high"), ordered = TRUE)
))
#> subject year month result
#> 1 1001 2024 7 low
#> 2 1002 2024 7 low
#> 3 1001 2024 8 low
#> 4 1002 2024 8 high
#> 5 1001 2024 9 high
#> 6 1002 2024 9 high
#> 7 1001 2024 10 low
#> 8 1002 2024 10 low
#> 9 1001 2024 11 low
#> 10 1002 2024 11 high
#> 11 1001 2024 12 high
#> 12 1002 2024 12 high
#> 13 1001 2025 1 low
#> 14 1002 2025 1 low
#> 15 1001 2025 2 low
#> 16 1002 2025 2 high
#> 17 1001 2025 3 high
#> 18 1002 2025 3 high
#> 19 1001 2025 4 low
#> 20 1002 2025 4 low
#> 21 1001 2025 5 low
#> 22 1002 2025 5 high
#> 23 1001 2025 6 high
#> 24 1002 2025 6 high
# Convert to R dates
df <- transform(df, timepoint = as.Date(paste(year, month, "01", sep = "-")))
# Add column of test result transitions (defaults: cap = 0, modulate = 0)
(df <- add_transitions(df))
#> subject result timepoint transition
#> 1 1001 low 2024-07-01 NA
#> 2 1002 low 2024-07-01 NA
#> 3 1001 low 2024-08-01 0
#> 4 1002 high 2024-08-01 1
#> 5 1001 high 2024-09-01 1
#> 6 1002 high 2024-09-01 0
#> 7 1001 low 2024-10-01 -1
#> 8 1002 low 2024-10-01 -1
#> 9 1001 low 2024-11-01 0
#> 10 1002 high 2024-11-01 1
#> 11 1001 high 2024-12-01 1
#> 12 1002 high 2024-12-01 0
#> 13 1001 low 2025-01-01 -1
#> 14 1002 low 2025-01-01 -1
#> 15 1001 low 2025-02-01 0
#> 16 1002 high 2025-02-01 1
#> 17 1001 high 2025-03-01 1
#> 18 1002 high 2025-03-01 0
#> 19 1001 low 2025-04-01 -1
#> 20 1002 low 2025-04-01 -1
#> 21 1001 low 2025-05-01 0
#> 22 1002 high 2025-05-01 1
#> 23 1001 high 2025-06-01 1
#> 24 1002 high 2025-06-01 0
# Format R dates just to show the month and year
transform(df, timepoint = format(timepoint, "%b-%Y"))
#> subject result timepoint transition
#> 1 1001 low Jul-2024 NA
#> 2 1002 low Jul-2024 NA
#> 3 1001 low Aug-2024 0
#> 4 1002 high Aug-2024 1
#> 5 1001 high Sep-2024 1
#> 6 1002 high Sep-2024 0
#> 7 1001 low Oct-2024 -1
#> 8 1002 low Oct-2024 -1
#> 9 1001 low Nov-2024 0
#> 10 1002 high Nov-2024 1
#> 11 1001 high Dec-2024 1
#> 12 1002 high Dec-2024 0
#> 13 1001 low Jan-2025 -1
#> 14 1002 low Jan-2025 -1
#> 15 1001 low Feb-2025 0
#> 16 1002 high Feb-2025 1
#> 17 1001 high Mar-2025 1
#> 18 1002 high Mar-2025 0
#> 19 1001 low Apr-2025 -1
#> 20 1002 low Apr-2025 -1
#> 21 1001 low May-2025 0
#> 22 1002 high May-2025 1
#> 23 1001 high Jun-2025 1
#> 24 1002 high Jun-2025 0
rm(df)