楼主: verbatim
1940 1

[问答] help on calculate time after last dose [推广有奖]

  • 1关注
  • 3粉丝

博士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
513 个
通用积分
2.0505
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
3404 点
帖子
139
精华
0
在线时间
143 小时
注册时间
2006-12-1
最后登录
2020-1-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Essentially, I have data from a PK sampling study that I would like to use to calculate time after last dose administration:

For example, it looks like this:
ID DATE TIME CONC DOSE
290261 02/14/2002 20:24 . 4
290261 02/15/2002 9:21 278.1000061 0
290261 02/15/2002 11:02 2202.399902 0
290261 02/15/2002 12:00 1938.5 0
290261 02/15/2002 13:55 1476.300049 0
290261 02/15/2002 17:45 310.2000122 0
290261 02/15/2002 21:50 120.1999969 0
290261 02/16/2002 10:04 37.70000076 0
290261 03/02/2002 20:38 . 4
290261 03/04/2002 15:36 62.59999847 0
290261 04/21/2002 20:38 . 4
290261 04/23/2002 16:19 77.80000305 0
290261 05/19/2002 21:21 . 4
290261 05/21/2002 17:02 64.90000153 0
290261 06/16/2002 21:07 . 4
290261 06/18/2002 16:04 65.69999695 0
290261 08/11/2002 21:36 . 4
290261 08/13/2002 15:07 79.5 0
290261 10/06/2002 20:24 . 4
290261 10/08/2002 15:36 72.69999695 0
290261 01/05/2003 20:24 . 4
290261 01/07/2003 17:02 60.70000076 0
381127 05/29/2002 19:55 . 4
381127 05/30/2002 8:38 198.1000061 0
381127 05/30/2002 12:28 1911.300049 0
381127 05/30/2002 13:26 1704.300049 0
381127 05/30/2002 15:21 790.4000244 0
381127 05/30/2002 19:26 203.1000061 0
381127 05/30/2002 23:31 85.30000305 0
381127 05/31/2002 11:31 22.39999962 0
381127 07/08/2002 21:07 . 4
381127 07/10/2002 15:07 98.90000153 0
381127 08/09/2002 19:55 . 4
381127 08/10/2002 10:19 130.6999969 0
381127 08/10/2002 11:02 137.1000061 0
381127 08/10/2002 12:00 2444 0
381127 08/10/2002 13:55 2044.900024 0
381127 08/10/2002 15:07 1325 0
381127 08/10/2002 18:57 676.2999878 0
381127 08/10/2002 23:02 391.8999939 0
381127 10/02/2002 19:55 . 4
381127 10/04/2002 15:36 96.19999695 0
400873 12/12/2001 0:00 . 4
400873 12/13/2001 7:55 307.5 0
400873 12/13/2001 9:07 2287.300049 0
400873 12/13/2001 10:04 1872 0
400873 12/13/2001 12:14 1086.699951 0
400873 12/13/2001 16:04 378.2999878 0
400873 12/13/2001 20:24 70.30000305 0
400873 12/14/2001 8:09 169.6000061 0
400873 01/08/2002 0:00 . 4
400873 01/11/2002 12:43 206.1999969 0
400873 01/22/2002 21:07 . 4
400873 01/23/2002 8:09 324.7999878 0
400873 01/23/2002 9:50 966 0
400873 01/23/2002 10:33 1098.699951 0
400873 01/23/2002 12:43 2227.600098 0
400873 01/23/2002 16:33 170.1999969 0
400873 01/23/2002 20:24 61.20000076 0
400873 01/24/2002 8:24 285.3999939 0
400873 02/18/2002 21:07 . 4
400873 02/20/2002 14:38 113.3000031 0
400873 03/23/2002 21:07 . 4
400873 03/25/2002 12:28 112.5 0
400873 04/20/2002 21:07 . 4
400873 04/22/2002 12:57 123.1999969 0
400873 06/08/2002 21:07 . 4
400873 06/10/2002 9:50 265.2999878 0
400873 08/03/2002 21:07 . 4
400873 08/05/2002 12:00 179 0
400873 10/26/2002 21:07 . 4
400873 10/28/2002 10:19 161.5 0
400880 02/19/2002 6:28 . 4
400880 02/20/2002 7:26 428.6000061 0
400880 02/20/2002 8:24 3770.100098 0
400880 02/20/2002 9:36 2738.100098 0
400880 02/20/2002 11:31 2614.699951 0
400880 02/20/2002 15:50 1905.800049 0
400880 02/20/2002 19:26 1314 0
400880 02/21/2002 7:40 322.1000061 0
400880 03/03/2002 12:00 . 4
400880 03/04/2002 11:45 1579.5 0
400880 03/24/2002 9:07 . 4
400880 03/25/2002 11:16 273.5 0
400880 04/30/2002 6:43 . 4
400880 05/01/2002 6:43 417.6000061 0
400880 05/01/2002 8:24 3212.100098 0
400880 05/01/2002 9:21 3422.5 0
400880 05/01/2002 11:31 2620.100098 0
400880 05/01/2002 15:21 1771.400024 0
400880 05/01/2002 19:26 1031.5 0
400880 05/02/2002 7:26 297.7999878 0
400880 06/19/2002 21:07 . 4
400880 06/21/2002 9:50 1383.5 0
400880 08/17/2002 22:04 . 4
400880 08/19/2002 11:02 1457.099976 0
400880 10/05/2002 23:02 . 4
400880 10/07/2002 14:52 262.7000122 0
400880 01/04/2003 22:33 . 4
400880 01/06/2003 9:50 1375.099976 0
400881 04/09/2002 12:57 . 4
400881 04/10/2002 7:12 86.19999695 0
400881 04/10/2002 8:24 2325.800049 0
400881 04/10/2002 9:21 1963.5 0
400881 04/10/2002 11:16 836.4000244 0
400881 04/10/2002 15:21 215.5 0
400881 04/10/2002 19:26 97.80000305 0
400881 04/11/2002 7:26 37.70000076 0
400881 04/28/2002 21:07 . 4
400881 04/29/2002 10:19 1015.799988 0
400881 06/01/2002 22:04 . 4
400881 06/03/2002 11:31 287.2000122 0
400881 06/25/2002 7:55 . 4
400881 06/26/2002 6:57 53.70000076 0
400881 06/26/2002 8:09 1650.800049 0
400881 06/26/2002 9:07 2553.699951 0
400881 06/26/2002 11:02 913.7999878 0
400881 06/26/2002 15:07 251.8000031 0
400881 06/26/2002 19:12 135.6000061 0
400881 06/27/2002 7:12 54 0
400881 10/05/2002 21:07 . 4
400881 10/07/2002 14:38 113.5999985 0
400881 11/30/2002 21:07 . 4
400881 12/02/2002 11:45 0 0
400881 03/01/2003 21:07 . 4
400881 03/03/2003 10:04 0 0
400882 02/06/2002 21:07 . 4
400882 02/07/2002 7:26 163.1000061 0
400882 02/07/2002 8:38 969.0999756 0
400882 02/07/2002 9:36 1946 0
400882 02/07/2002 11:31 1011.900024 0
400882 02/07/2002 15:36 298.5 0
400882 02/07/2002 19:40 110.0999985 0
400882 02/08/2002 7:40 42.20000076 0
400882 02/23/2002 21:07 . 4
400882 02/25/2002 11:31 81.30000305 0
400882 03/23/2002 21:07 . 4
400882 03/25/2002 11:31 195.1999969 0
400882 04/30/2002 21:07 . 4
...

where DOSE = 4 means it was a dosing event while DOSE = 0 means observation event. I would like to make a simple "Time after Dose" vs "Concentration" plot for each individual in the study.

Any input would be appreciated.


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:calculate After dose Help Late general example instead forums

沙发
zhangyangsmith 发表于 2012-7-27 22:15:55 |只看作者 |坛友微信交流群
Suppose your data has  been stored as "data.txt"
  1. # Read data

  2. dfNMdt <-
  3. read.table("data.txt", header = T,
  4. na.strings = ".", as.is = T)

  5. # Date & Time

  6. dfNMdt$DTTM <-
  7. strptime(paste(dfNMdt$DATE, dfNMdt$TIME),
  8. "%m/%d/%Y %H:%M")

  9. # Time since first dose

  10. dfNMdt$TSLD <- 0

  11. # Dosing time

  12. dtDose <- dfNMdt[1, "DTTM"]

  13. # Loop for fill in time since last dose

  14. for (i in 2:nrow(dfNMdt))

  15. {

  16. if (dfNMdt[i, "DOSE"] > 0)

  17. {

  18. dfNMdt[i, "TSLD"] <- 0

  19. dtDose <- dfNMdt[i, "DTTM"]

  20. }

  21. else

  22. {

  23. dfNMdt[i, "TSLD"] <-
  24. as.numeric(
  25. difftime(
  26. dfNMdt[i, "DTTM"], dtDose,
  27. unit = "hours"
  28. )
  29. )

  30. }

  31. }

  32. # Plot

  33. for (i in unique(dfNMdt$ID))

  34. {

  35. png(paste("ID", i, ".png", sep = ""))

  36. plot(
  37. with(
  38. dfNMdt,
  39. dfNMdt[ID == i & DOSE == 0, "TSLD"]
  40. ),
  41. with(
  42. dfNMdt,
  43. dfNMdt[ID == i & DOSE == 0, "CONC"]
  44. ),
  45. type = "p",
  46. xlab = "time",
  47. ylab = "conc"
  48. )

  49. dev.off()

  50. }
复制代码
A few things to consider:
  • adding evid to your dataset. I would be more comfortable to use evid == 1 | evid == 4 than dose > 0
  • consider using NONMEM to generate time after first / last dose, so that you do not have to worry about the transform from string to date-time in R:
    $INPUT ID DATE TIME CONC DOSE ...
    $ERROR / $PRED
    IF(NEWIND.LE.1.AND.DOSE.GT.0) TFDS=TIME ; TIME OF FIRST DOSE
    TSFD=TIME-TFDS ; TIME SINCE FIRST DOSE
    IF(DOSE.GT.0) TLDS=TIME ; TIME OF LAST DOSE
    TSLD=TIME-TSLD; TIME SINCE LAST DOSE
    ...
    $TABLE ... TSFD TSLD ...

已有 1 人评分论坛币 热心指数 收起 理由
qoiqpwqr + 20 + 1 热心帮助其他会员

总评分: 论坛币 + 20  热心指数 + 1   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 00:25