全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1562 4
2014-04-24
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

二维码

扫码加我 拉你入群

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

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

全部回复
2014-5-5 17:04:40
复制代码
二维码

扫码加我 拉你入群

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

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

2014-5-8 23:25:18
> # Time of dosing recorded in the dataset
>  
> datNew$*****S <-
Error: unexpected '^' in "datNew$**"
>  
>   with(datNew,
+  
+        ifelse(EVID == 1, TIME, NA))
[1]   NA    0   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA  696   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA 1416   NA   NA   NA   NA
[31]   NA   NA   NA   NA   NA   NA    0   NA   NA  696   NA   NA 1416   NA   NA    0   NA  696   NA 1416
二维码

扫码加我 拉你入群

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

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

2014-5-9 01:21:12
when I change *****S to S, I got below dataset (datNew):, however, for the records with OBS = 11, 24, 35, TSLD should be 24 instead of current 0 in datNew. Thanks for further help in advance.

datNew = 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(NA, 50000, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 50000, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 50000, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 50000,
NA, NA, 50000, NA, NA, 50000, NA, NA, 50000, NA, 50000, NA, 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(NA, 24, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 24, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 24, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
24, NA, NA, 24, NA, NA, 24, NA, NA, 24, NA, 24, NA, 24), SS = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 2, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 2, NA, NA, 2, NA, NA, NA, NA, 2, NA,
2), ADDL = c(NA, 28, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 29, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 29, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 28, NA, NA, 29, NA, NA, 29, NA,
NA, 28, NA, 29, NA, 29), OBS = 1:50, S = c(NA, 0, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 696, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 1416, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 0, NA, NA, 696, NA, NA, 1416, NA, NA, 0, NA, 696, NA, 1416
), S.locf = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 696,
696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 1416, 1416,
1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 0, 0, 0, 0, 696,
696, 696, 1416, 1416, 0, 0, 0, 696, 696, 1416), II.locf = c(24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24), ADDL.locf = c(28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 29, 29, 29, 29,
29, 28, 28, 28, 29, 29, 29), TSLD = c(0, 0, 1.16, 1.89, 2.88,
3.85, 4.95, 5.94, 8.01, 9.89, 0, 1, 1.5, 24, 0, 0.830000000000041,
2.00999999999999, 3.01999999999998, 4.11000000000001, 4.90999999999997,
6.05999999999995, 7.89999999999998, 9.92999999999995, 0, 24,
0, 1, 1.81999999999994, 2.96000000000004, 4.01999999999998, 5.13000000000011,
6.03999999999996, 8.11999999999989, 10.03, 0, 0, 0, 2.09, 24,
0, 2.13999999999999, 24, 0, 1.82999999999993, 0, 0, 24, 0, 24,
0)), .Names = c("ID", "DAY", "TIME", "AMT", "MDV", "EVID", "II",
"SS", "ADDL", "OBS", "S", "S.locf", "II.locf", "ADDL.locf", "TSLD"
), row.names = c(NA, -50L), class = "data.frame")

二维码

扫码加我 拉你入群

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

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

2014-5-9 13:32:50
I did not test your data but have recently dealt with a similar problem. Here I want to show you the method of how to do it.

1. First you need to extract the dosing event together with the unique ID of the data set, and create a new dataframe.

2. Merge the two data sets by the unique ID, which would give you a column of the dosing time.

3. What's left is pretty straightforward. You can simply do a elementary-school math to calculate the time after dosing.

Hope this helps.
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群