具有重叠日期的 10 天间隔
10 Day intervals with a overlapping date
我有一个年度数据集,我想将其分成 10 天的时间间隔。例如,我想子集 2010-12-26
到 2011-01-04
使用这些日期的 x 和 y 值创建一个家庭范围,然后在这种情况下获取接下来的 9 天加上子集数据之间的重叠日期将是 2011-01-04
(2011-01-04 to 2011-01-13
)。有什么好的方法吗?
library(lubridate)
date <- rep_len(seq(dmy("26-12-2010"), dmy("20-01-2011"), by = "days"), 500)
df <- data.frame(date = date,
x = runif(length(date), min = 60000, max = 80000),
y = runif(length(date), min = 800000, max = 900000))
我用 10 次观察将它们分开,但我不确定如何才能更具体地获得 10 天而不是仅仅 10 次观察。
interval_10 <- lapply(
seq(0, nrow(df), by = 10),
function(k) df[max(k+1, 1):min(k + 10, nrow(df)), ]
)
谢谢
lapply
通过唯一的日期向量将完成工作:
t <- unique(date)[seq(from = 1, to = length(unique(date)), by = 9)]
interval_10 <- lapply(
1:(length(t)-1),
function(k) df %>% filter(date <= t[k+1], date >= t[k])
)
我有一个年度数据集,我想将其分成 10 天的时间间隔。例如,我想子集 2010-12-26
到 2011-01-04
使用这些日期的 x 和 y 值创建一个家庭范围,然后在这种情况下获取接下来的 9 天加上子集数据之间的重叠日期将是 2011-01-04
(2011-01-04 to 2011-01-13
)。有什么好的方法吗?
library(lubridate)
date <- rep_len(seq(dmy("26-12-2010"), dmy("20-01-2011"), by = "days"), 500)
df <- data.frame(date = date,
x = runif(length(date), min = 60000, max = 80000),
y = runif(length(date), min = 800000, max = 900000))
我用 10 次观察将它们分开,但我不确定如何才能更具体地获得 10 天而不是仅仅 10 次观察。
interval_10 <- lapply(
seq(0, nrow(df), by = 10),
function(k) df[max(k+1, 1):min(k + 10, nrow(df)), ]
)
谢谢
lapply
通过唯一的日期向量将完成工作:
t <- unique(date)[seq(from = 1, to = length(unique(date)), by = 9)]
interval_10 <- lapply(
1:(length(t)-1),
function(k) df %>% filter(date <= t[k+1], date >= t[k])
)