【问题标题】:10 Day intervals with a overlapping date具有重叠日期的 10 天间隔
【发布时间】:2021-07-16 21:01:37
【问题描述】:

我有一个年度数据集,我想将其分成 10 天的间隔。例如,我想将 2010-12-26 子集化为 2011-01-04 使用这些日期的 x 和 y 值创建一个主范围,然后获取接下来的 9 天加上子集数据之间的重叠日期,在这种情况下它将是 @987654323 @ (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)), ]
)

谢谢

【问题讨论】:

  • 这是一种创建所需间隔的方法...df.interval &lt;- data.frame(from = seq.Date(min(df$date), max(df$date), by = 9),to = from + 9)。我现在无法提供更好的答案,因为没有提供所需的输出。

标签: r date lapply posixct


【解决方案1】:

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])
)

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2016-09-08
    相关资源
    最近更新 更多