我有2個數據框:「start.date」和「death.date」。每個包括2列「numid」(數字ID)和「日期」列。 「start.date」是記錄每個numid的疾病開始的數據集。 「death.date」僅包含那些在death.date $ date中死亡的「start.date」中的numid。計算不同長度的數據集中numid相同的差異
我需要爲具有相同numid的人計算start.date和death.date之間的差異(=存活率)。
這是我寫的:
tempi<-as.numeric(factor(start.date$numid))
tempj<-as.numeric(factor(death.date$numid))
for(i in tempi){
for(j in tempj){
surviv[i]<-ifelse(colic.date$numid[i]==death.date$numid[j],
death.date$date.death[j]-colic.date$date.colic[i],
"alive")
}
}
在這裏我的問題,我認爲是surviv [I]只保留death.date $ numid [J]的最後一個值,但我不能找到出路。任何人都可以點亮這一點嗎? 有可能更簡單的方法來做到這一點(它運行速度非常慢 - 即使有錯誤的結果)
道歉,如果這已被討論的地方,我什麼都找不到我的數據。
乾杯 馬爾科
謝謝@Infominer的建議。我最初在%中使用%,但無法在此實例中使用它,但最終您的代碼爲我工作。如果問題是,即使我已經在原始數據集中指定日期爲.POSIXct,那麼當我使用cbind在原始數據集之間合併這些日期列時,R會將這些日期重新轉換爲數字(不知道爲什麼)。因此,我通過首先將日期as.character()與cbind綁定在一起,然後在使用difftime()之前將日期轉換爲as.POSIXct()。謝謝你的幫助! – MarcoD