r - 按 3 天对时间序列数据进行子集化并保存在列表中

标签 r list for-loop time-series

将时间序列设置为 3 天并继续保存在列表中。假设第一个子集来自 day 1 to day 3那么第二个子集将来自 day 2 to day 4这样每个子集都有3天的数据。请注意,这是 10 分钟数据时间戳。并根据数据中可用的总天数保存列表中的每个子集。
我试过复制它。

 time_10 <- seq(ISOdatetime(2001,2,1,0,0,0), ISOdatetime(2001,3,31,0,0,0), by=(200))

    a <- as.data.frame(matrix(, nrow = length(time_10), ncol = 4))
    names(a)<- c("time_10","var1","var2","var3")
    a$time_10 <- time_10
    a$var1 <- runif(nrow(a), min=20, max=70)
    a$var2 <- runif(nrow(a), min=10, max=50)
    a$var3 <- runif(nrow(a), min= 3, max=10)
    head(a)  

enter image description here

这是我附加的图像,它将给出对时间序列数据进行子设置并将其保存在列表中的想法。这里分别是 D1:day1、D2:day2、D3:day3。使用 For 循环或任何其他最佳方法是值得赞赏的。注意:因此在 For 循环中,3 天的数据子设置将继续发生并保存在索引为 (Subset_n) 的列表中,其中 n 是子集数。

最佳答案

这似乎适用于您的情况。我所做的是提取日期并从头到尾滚动 3 天的窗口 (ww)。对于每一步,我根据窗口中的天数对 data.frame 进行子集化并将其存储到列表中。

time_10 <- seq(ISOdatetime(2001,2,1,0,0,0), ISOdatetime(2001,3,31,0,0,0), by=(200))
var1 <- runif(length(time_10), min=20, max=70)
var2 <- runif(length(time_10), min=50, max=90)
var3 <- runif(length(time_10), min=50, max=90)

a <- as.data.frame(matrix(, nrow = length(time_10), ncol = 4))
names(a)<- c("time_10","var1","var2","var3")
a$time_10 <- time_10
a$var1 <- var1
a$var2 <- var2
a$var3 <- var3

date <- strptime(a$time_10, format = "%Y-%m-%d")
td10 <- sort(unique(date))

ww <- 3
out <- vector("list", length(td10) - round(ww/2))  # preallocate a list

for (i in 1:length(td10)) {
  bb <- i:(i + ww - 1) # this is the bounding box

  if (max(bb) > length(td10)) {
    message("End of time series reached, exiting.")
    return(NULL)
  }

  out[[i]] <- a[date %in% td10[bb], ]
}

# check ranges of dates for each subset
lapply(out, FUN = function(x) range(x$time_10))

关于r - 按 3 天对时间序列数据进行子集化并保存在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129115/

相关文章:

r - 不断收到错误: Expecting a single value: [extent=2] in summarise

r - 加载 .RData 时生成的相同随机数据

r - 从R中的lm提取t-stat p值

r - R 中的非规范化矩阵

javascript - 从没有数组的函数链中提取数据

python - 如何迭代不相等的嵌套列表以创建新列表 Python

list - 从列表中获取itemCount

Python - 嵌套列表 : One line code

java - JSoup 抓取 - 尝试一次从 70 页抓取数据,但我的循环不起作用

javascript - Javascript 中 for 循环的每个参数都有多个操作