我有兩個數據幀,一個留院,另一個是實驗室結果。我需要確定哪個醫院留有實驗室結果,並將入院和出院日期從醫院數據框複製到相關實驗室結果的行中。提高鏈接兩個數據幀中的數據的效率
我正在用for循環來查看實驗室結果,然後查看醫院記錄中是否包含匹配條目(通過患者SSN和周圍日期)的語句和子集。
這是一個相當大的數據集,使用for循環非常慢。有沒有辦法來加速這種問題? (我有幾個類似的問題,所以會喜歡答案。)
添加樣本數據,請注意,每個患者有多個醫院記錄,目標是從記錄中的日期重疊實驗日期。在本例中,由於患者2沒有醫院數據,因此生成的數據框應該只有患者1的入院和出院日期,患者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
注意,在真實的數據,也有多個醫院記錄預選賽(部門之間的放電),這些記錄將具有相同的問題入學日期,但不同的排放時間與最新的一個是重要的。但是,先...
您能否請求顯示示例數據,以及預期的輸出是什麼?它會幫助他人正確地幫助你。 – Sagar
嘗試使用'dplyr'的'join'函數合併兩個數據框。如果您複製樣本數據,我們可以提供幫助。提供的樣本數據爲 – sweetmusicality
。合併將不起作用,因爲它不會識別日期問題。 – rwbuie