【发布时间】:2018-05-07 12:14:21
【问题描述】:
我有两个数据集,分别测量疼痛评分和给药剂量。我把这些数据结合起来。我想根据给定的剂量和疼痛程度将它们结合起来。首先,它应该是第一次给药,然后是疼痛测量,给药后不超过 6 小时。有时会在一次剂量后进行更多的疼痛测量,我需要将它们包括在内。
我尝试循环:
dosage
pain #this are both data sets
> head(pain, n=25)
ID PROTOCOL COMFORTneo NRSPain Date_Time
1 2001 6 13 3 2014-09-30 00:00:00
2 2001 6 11 2 2014-09-30 04:00:00
3 2001 6 12 . 2014-09-30 09:00:00
4 2001 6 10 . 2014-09-30 13:00:00
5 2001 6 6 . 2014-09-30 19:00:00
6 2001 6 7 . 2014-09-30 20:00:00
7 2001 6 10 . 2014-10-01 00:00:00
8 2001 6 16 3 2014-10-01 04:00:00
9 2001 6 9 . 2014-10-01 08:00:00
10 2001 6 10 . 2014-11-20 05:00:00
11 2001 6 11 . 2014-11-20 12:00:00
12 2001 6 12 . 2014-11-20 13:00:00
13 2001 6 13 3 2014-11-20 18:00:00
14 2001 6 14 1 2014-11-20 20:00:00
15 2001 6 9 . 2014-11-21 06:00:00
16 2001 6 10 . 2014-11-21 10:00:00
17 2001 6 12 . 2014-11-21 14:00:00
18 2001 6 14 . 2014-11-21 16:00:00
19 2001 6 8 . 2014-11-22 02:00:00
20 2001 6 14 . 2014-11-22 20:00:00
21 2001 6 16 1 2014-11-23 00:00:00
22 2001 6 10 . 2014-11-23 03:00:00
23 2001 6 11 . 2014-11-23 06:00:00
24 2001 6 17 . 2014-11-23 08:00:00
25 2001 6 9 . 2014-11-23 12:00:00
>
> head(dosage, n=25)
ID PROTOCOL ADM DOSEBOLUS DateS_TimeS
1 2001 6 1 40 2014-11-20 11:39:00
2 2001 6 1 20 2014-11-20 18:16:00
3 2001 6 1 20 2014-11-21 00:02:00
4 2001 6 1 20 2014-11-21 06:03:00
5 2001 6 1 20 2014-11-21 12:00:00
6 2001 6 1 20 2014-11-21 18:12:00
7 2001 6 1 20 2014-11-22 00:10:00
8 2001 6 1 20 2014-11-22 06:00:00
9 2001 6 1 20 2014-11-22 12:00:00
10 2001 6 1 20 2014-11-22 17:55:00
11 2001 6 1 20 2014-11-22 23:40:00
12 2001 6 1 20 2014-11-23 06:00:00
#DateS_TimeS is a time of drug administration
并且 Date_Time 是疼痛评分测量的时间, 我想为每个剂量分配可能的疼痛 不再进行的测量 然后在给药后6小时。
dosage$DateS_TimeS<-as.character(dosage$DateS_TimeS)
pain$Date_Time<-as.character(pain$Date_Time)
dosage$DateS_TimeS<-as_datetime(dosage$DateS_TimeS)
pain$Date_Time<-as_datetime(pain$Date_Time)
df<-NULL
for (i in dosage)
{ for (j in pain)
{ if (dosage$DateS_TimeS[i] - pain$Date_Time[j] <= 6)
{df <- rbind(df, cbind(dosage(i), pain(j)))}
{ if (DateS_TimeS(i) - Date_Time(j) > 6)
{ break
} } } }
但是不工作... 如果您知道任何其他解决方案,请告诉我。或者,如果您知道如何改进 for 循环,我会非常高兴。 谢谢!
【问题讨论】:
-
查找“数据表非等连接”。
-
感谢@Gregor 的建议,查找它是一个非常有趣的主题。
标签: r for-loop data-manipulation