我想构建一个数据框,其中为每个患者分配不同的血压值,取自具有预定义值的各个间隔组。虽然,我已经成功地找出了如何通过相应地对数据框进行排序来选择最大值,但是在包中没有固有的选项来使用每个项目ID的不同间隔集,所以我认为我可以使用for循环来使其工作,但是没有任何明显的成功。
这是数据
>df1
PatientID BloodPressure
Patient1 50
Patient2 100
>df2
IntervalID PatientID Low High Index
Interval1 Patient1 10 80 20
Interval2 Patient1 70 120 40
Interval3 Patient1 90 150 60
Interval4 Patient1 160 260 80
Interval5 Patient1 200 300 100
Interval1 Patient2 10 80 30
Interval2 Patient2 70 120 50
Interval3 Patient2 90 150 70
Interval4 Patient2 160 260 90
Interval5 Patient2 200 300 110
这是实际的代码。
df1[, BloodPressure2 := BloodPressure]
for (Patient in unique(df1$PatientID)){
setkey(df2[df2$PatientID==Patient], Low, High)
d3=data.frame(t(matrix(unlist(foverlaps(df1[df1$PatientID==Patient], df2[df2$PatientID==Patient], by.x = c("BloodPressure", "BloodPressure2"), mult = "last", type = "within")[, .(PatientID, BloodPressure, Index, IntervalID)])))
d4=rbind(d4,d3)
}
目的是创建一个数据表/框架,为每位患者提供间隔ID和分数。在这种情况下,d3用于存储每个案例的数据集并连接到d4,这应该看起来像......
>df4
PatientID BloodPressure Index IntervalID
Patient1 50 20 Interval1
Patient2 100 70 Interval3
为了在不违反患者保密的情况下解决技术问题,此处发布的数据是虚构的。