【问题标题】:Generate subsequences in R在 R 中生成子序列
【发布时间】:2020-11-16 08:05:43
【问题描述】:

我有一个 67200 obs 长的 df,有 5 个变量。我想从一个 var 创建一个子序列列表,每个 var 长度相等(600 obs)。我希望序列是迭代的,以便我可以识别滚动序列,即 seq1 = 0:600、seq2 = 1:601、seq3 = 2:602 等等。然后,我将对每个子序列的数据求和,以确定总和最高的序列。

我了解如何使用seq 制作基本序列,但是在阅读了 SO 和其他网站之后,我只能找到有关如何识别特定序列的信息。任何有关创建所述子序列的想法的帮助都会很棒。

样本数据:

Var1  Var2  Var3  Var4  Var5
0.00  0.31  0.32  0.00  0.01
0.10  0.46  0.46  0.13  0.01
0.20  0.46  0.47  0.14  0.02
0.30  0.40  0.21  0.14  0.02
0.40  0.38  0.11  0.20  0.03
0.50  0.38  0.07  0.25  0.04

预期输出: x 每个子序列的列表

【问题讨论】:

  • 样本数据和预期输出? (小于 67K 行,请 :-)

标签: r


【解决方案1】:

为了回答您的问题,我认为您可以使用 lapplyseq 实现您的预​​期输出:

x <- 600
n <- 0:(nrow(df) - 600)
lapply(n, function(i) seq(i, i+x))

但是,阅读说明,您似乎正在尝试执行滚动计算,而上述方法并不是执行此操作的最佳方法。查看zoo 库,它具有rollsumrollmean 或一般rollapply 之类的功能,这将有更好的方法来做到这一点。

【讨论】:

  • rollapply 函数很有效 - output &lt;- rollapply(df$var1, FUN = sum, width = 600)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
相关资源
最近更新 更多