簡體   English   中英

R時間段重疊

[英]R Time periods overlapping

使用R中的“lubridate”包,我可以看出兩個時間段是否重疊。 但有沒有一種有效的方法來計算它們重疊的天數。 (例如,女性在懷孕期間吸煙的天數。懷孕期和吸煙期可能完全重疊,部分或完全不重疊)

以下是三位女性的例子:

preg_start<-as.Date(c("2011-01-01","2012-01-01","2013-01-01"))
preg_end<-preg_start+270 # end after 9 months
smoke_start<-as.Date(c("2011-02-01","2012-08-01","2014-01-01"))
smoke_end<-smoke_start+100 # all three smoked 100 days

data<-data.frame(cbind(preg_start,preg_end,smoke_start,smoke_end))

我想添加一個變量,說第一個女人在懷孕期間吸煙100天,第二個吸煙30天,第三個懷孕時不吸煙。

使用interval創建懷孕和吸煙的時間間隔。 然后計算這些間隔的intersect 從您可以計算period以天為單位。

library("lubridate")
preg_start<-as.Date(c("2011-01-01","2012-01-01","2013-01-01"))
preg_end<-preg_start+270 # end after 9 months
smoke_start<-as.Date(c("2011-02-01","2012-08-01","2014-01-01"))
smoke_end<-smoke_start+100 # all three smoked 100 days

smoke <- new_interval(smoke_start, smoke_end, tzone="UTC")
preg <- new_interval(preg_start, preg_end, tzone="UTC")
day(as.period(intersect(smoke, preg), "days"))

我在懷孕期間吸煙100,57和0天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM