更有效地关联数据帧

时间:2017-08-22 18:54:59

标签: r

我有两个数据框,一个是住院,另一个是实验室结果。我需要确定实验结果发生在哪家医院,并将入院和出院日期从医院数据框复制到相关实验室结果的行中。

我正在使用for循环来遍历实验室结果,然后使用在医院记录中查找匹配条目(通过患者SSN和周围日期)的语句和子集。

这是一个非常大的数据集,使用for循环非常慢。有没有办法加速这种问题? (我有几个类似的问题,所以会喜欢答案。)

添加了样本数据,请注意每位患者有多个医院记录,目标是从日期与实验日期重叠的记录中获取日期。在此示例中,结果数据框应仅具有患者1的入院和出院日期,因为患者2没有医院数据,患者3的记录与实验日期不重叠。

testDate <- as.Date(c("2017-01-15", "2017-01-15", "2017-01-15"))
patientSSN <- c("1","2","3")
labs <- data.frame(patientSSN, testDate)

#   patientSSN   testDate
# 1          1 2017-01-15
# 2          2 2017-01-15
# 3          3 2017-01-15

patientSSN <- c("1","1","3","3")
admissionDate <- as.Date(c("2017-01-07", "2017-02-01", "2016-12-01", "2017-01-16"))
dischargeDate <- as.Date(c("2017-01-16", "2017-02-10", "2016-12-15", "2017-02-01"))
hospitalRec <- data.frame(patientSSN, admissionDate, dischargeDate)

for (I in 1:nrow(labs)) {
labs[I,]$admissionDate <- hospitalRec[hospitalRec$patientSSN == labs[I,]$patientSSN & hospitalRec$admissionDate <= labs[I,]$testDate & hospitalRec$dischargeDate >= labs[I,]$testDate,]$admissionDate

labs[I,]$admissionDate <- hospitalRec[hospitalRec$PatientSSN == labs[I,]$PatientSSN & hospitalRec$admissionDate <= labs[I,]$testDate & hospitalRec$dischargeDate >= labs[I,]$testDate,]$dischargeDate

}

所需的数据框如下所示:

labs:
    patientSSN  testDate   admissionDate  dischargeDate
    1           2017-01-15 2017-01-07     2017-01-16
    2           2017-01-15 NA             NA
    3           2017-01-15 NA             NA

请注意,在实际数据中,还存在多个医院记录符合条件(部门之间的排放)的问题,这些记录具有相同的入院日期,但不同的出院时间与最新的记录是重要的。但首先要做的事情......

0 个答案:

没有答案