dat = structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), DAY = c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 30L, 30L, 30L, 30L, 30L, 30L,
30L, 30L, 30L, 30L, 30L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L,
60L, 60L, 60L, 1L, 1L, 1L, 30L, 30L, 30L, 60L, 60L, 60L, 1L,
1L, 30L, 30L, 60L, 60L), TIME = c(0, 0, 1.16, 1.89, 2.88, 3.85,
4.95, 5.94, 8.01, 9.89, 24, 49, 49.5, 696, 696, 696.83, 698.01,
699.02, 700.11, 700.91, 702.06, 703.9, 705.93, 720, 1416, 1416,
1417, 1417.82, 1418.96, 1420.02, 1421.13, 1422.04, 1424.12, 1426.03,
1440, 0, 0, 2.09, 696, 696, 698.14, 1416, 1416, 1417.83, 0, 0,
696, 696, 1416, 1416), AMT = c(".", "50000", ".", ".", ".", ".",
".", ".", ".", ".", ".", "", "", ".", "50000", ".", ".", ".",
".", ".", ".", ".", ".", ".", ".", "50000", ".", ".", ".", ".",
".", ".", ".", ".", ".", ".", "50000", ".", ".", "50000", ".",
".", "50000", ".", ".", "50000", ".", "50000", ".", "50000"),
MDV = c(0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L,
0L, 0L, 1L, 0L, 1L, 0L, 1L), EVID = c(0L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L
), II = c(".", "24", ".", ".", ".", ".", ".", ".", ".", ".",
".", "", ".", ".", "24", ".", ".", ".", ".", ".", ".", ".",
".", ".", ".", "24", ".", ".", ".", ".", ".", ".", ".", ".",
".", ".", "24", ".", ".", "24", ".", ".", "24", ".", ".",
"24", ".", "24", ".", "24"), SS = c(".", ".", ".", ".", ".",
".", ".", ".", ".", ".", ".", "", ".", ".", "2", ".", ".",
".", ".", ".", ".", ".", ".", ".", ".", "2", ".", ".", ".",
".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "2", ".",
".", "2", ".", ".", ".", ".", "2", ".", "2"), ADDL = c(".",
"28", ".", ".", ".", ".", ".", ".", ".", ".", ".", "", ".",
".", "29", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".",
"29", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "28",
".", ".", "29", ".", ".", "29", ".", ".", "28", ".", "29",
".", "29"), OBS = 1:50), .Names = c("ID", "DAY", "TIME",
"AMT", "MDV", "EVID", "II", "SS", "ADDL", "OBS"), class = "data.frame", row.names = c(NA,
-50L))
For the above dataset, there are 3 subjects, dose event is indicated by AMT >0, MDV=1, EVID=1, but there are II (interdose interval) and ADDL (additional doses) which means last dose time may not be 0 for the records before second record with AMT >0, for example, for ID=1 and record with OBS= 12 ~14, the last dose time should be 48, 48, 672 and time since last dose event for these three records should be 1, 1.5, 24. Basically the dose was give every 24 hrs and totally 89 doses