如何将不等间隔添加到日期
How to add unequal intervals to date
我创建了这样的轮班时间
library(lubridate)
date1 <- ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")
shifts2<- lapply(0:14, function(x){
lapply(c(0,270,480,960), function(y){
interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+480)))
})
})
这是我的输出
[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
[[2]]
[1] 2000-01-01 10:00:00 EST--2000-01-01 18:00:00 EST
[[3]]
[1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
[[4]]
[1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
我可以为每个班次增加固定的 480 分钟。
现在我想给第一班增加 480 分钟,给下一班增加 600 分钟等等。
基本上我想添加不等长的移位时间。
我的预期输出是:
2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
谢谢
这个怎么样?
library(lubridate)
date1 <- ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")
intervalsMin <- c(0,270,480,960)
incrementalMin <- c(480,720,960,1440)
shifts
2<- lapply(0:14, function(x){
lapply(1:(length(intervalsMin)), function(y){
interval((date1+days(x)+minutes(intervalsMin[y])), (date1+days(x)+minutes(incrementalMin[y])))
})
})
shifts2[[1]]
#[[1]]
#[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
#[[2]]
#[1] 2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
#[[3]]
#[1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
#[[4]]
#[1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
我不太确定我是否正确理解了你的问题。您的预期输出与您在问题中描述的不同。
根据您的预期输出,我得出了这些变化:c(480, 450, 480, 480)
shifts <- lapply(0:14, function(x){
mapply(function(y,z){
interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
}, y = c(0,270,480,960), z = c(480, 450, 480, 480), SIMPLIFY = FALSE)
})
> shifts[[1]]
[[1]]
[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
[[2]]
[1] 2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
[[3]]
[1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
[[4]]
[1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
所以我希望这就是您要找的。
我创建了这样的轮班时间
library(lubridate)
date1 <- ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")
shifts2<- lapply(0:14, function(x){
lapply(c(0,270,480,960), function(y){
interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+480)))
})
})
这是我的输出
[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST [[2]] [1] 2000-01-01 10:00:00 EST--2000-01-01 18:00:00 EST [[3]] [1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST [[4]] [1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
我可以为每个班次增加固定的 480 分钟。
现在我想给第一班增加 480 分钟,给下一班增加 600 分钟等等。 基本上我想添加不等长的移位时间。
我的预期输出是:
2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
谢谢
这个怎么样?
library(lubridate)
date1 <- ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")
intervalsMin <- c(0,270,480,960)
incrementalMin <- c(480,720,960,1440)
shifts
2<- lapply(0:14, function(x){
lapply(1:(length(intervalsMin)), function(y){
interval((date1+days(x)+minutes(intervalsMin[y])), (date1+days(x)+minutes(incrementalMin[y])))
})
})
shifts2[[1]]
#[[1]]
#[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
#[[2]]
#[1] 2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
#[[3]]
#[1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
#[[4]]
#[1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
我不太确定我是否正确理解了你的问题。您的预期输出与您在问题中描述的不同。
根据您的预期输出,我得出了这些变化:c(480, 450, 480, 480)
shifts <- lapply(0:14, function(x){
mapply(function(y,z){
interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
}, y = c(0,270,480,960), z = c(480, 450, 480, 480), SIMPLIFY = FALSE)
})
> shifts[[1]]
[[1]]
[1] 2000-01-01 05:30:00 EST--2000-01-01 13:30:00 EST
[[2]]
[1] 2000-01-01 10:00:00 EST--2000-01-01 17:30:00 EST
[[3]]
[1] 2000-01-01 13:30:00 EST--2000-01-01 21:30:00 EST
[[4]]
[1] 2000-01-01 21:30:00 EST--2000-01-02 05:30:00 EST
所以我希望这就是您要找的。