在R中使用具有不同参考值集的foverlaps

时间:2017-10-07 19:41:28

标签: r data.table overlap

我想构建一个数据框,其中为每个患者分配不同的血压值,取自具有预定义值的各个间隔组。虽然,我已经成功地找出了如何通过相应地对数据框进行排序来选择最大值,但是在包中没有固有的选项来使用每个项目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

为了在不违反患者保密的情况下解决技术问题,此处发布的数据是虚构的。

0 个答案:

没有答案