【问题标题】:R: convert vectors of different lengths into a fixed time intervalR:将不同长度的向量转换成固定的时间间隔
【发布时间】:2014-04-02 10:22:56
【问题描述】:

我正在使用 不同长度 105,102 的 2 个向量。打电话给他们y1,y2

虽然它们的长度不同,但每个向量都代表 30 秒内发生的活动。

假设所有向量的第一个元素从时间 = 0 秒开始,我可以使用以下代码将它们绘制出来:

y1 <- plot(seq(0,100,length = 105), rnorm(length(seq(0,100,length = 105))), type = "l")
y2 <- plot(seq(0,100,length = 102), rnorm(length(seq(0,100,length = 102))), type = "l")
l <- length(y1)
x <- seq(0,l,length= l)
y <- y1
plot(x, y, type = "l", xlab = "time", ylab = "bla")


l <- length(y2)
x <- seq(0,l,length= l)
y <- y2
lines(x,y, type = "l")

现在上面的代码将生成一个 x 轴范围为 $(0,105)$ 的图形。但是,我希望 x 轴显示 $(0, 30)$ 秒。

我知道主要问题是这两个向量的长度不同,但假设我想沿时间间隔 $0 - 30$ 秒拆分每个向量的元素。

我应该如何处理这个问题?

【问题讨论】:

  • 你是rnorm()你的y1, y2生成的向量吗?我不清楚线图的 x 和 y 值是多少。向量的元素与您的 (0,30) 区间有何关系?
  • 是的。您可以将向量视为表示由rnorm 函数生成的值的时间序列。我确实概括了这个问题,但这应该不会影响这个问题的主要思想。
  • 向量的值并不重要。主要问题是向量的长度不同。但是我们可以放心地假设这两个向量的第一个元素总是从 time = 0
  • 您基本上想要创建一个散点图,您需要 (x,y) 格式的点。您的 y 值是来自向量 y1,y2 的值​​。您的 x 值是多少?如何计算每个点的值?

标签: r


【解决方案1】:

我认为 OP 只是希望以 30 秒的时间间隔平均分配每个 y 向量并绘制相同的图。在这种情况下,以下应该可以解决问题。本质上,对于plot 和lines 函数的x 参数,我们需要提供元素数量等于y 对应参数中的元素数量的向量,分布范围为0 到30。

set.seed(1234)
y1 <- rnorm(length(seq(0,100,length = 105)))
y2 <- rnorm(length(seq(0,100,length = 102)))
plot((30/length(y1))*seq_along(y1), y1, type = 'l',col='red', xlab='time', ylab='y')
lines((30/length(y2))*seq_along(y2), y2, col='green')

给了

【讨论】:

  • 干得好,但是是的,OP 需要了解他的每个向量的实际采样间隔是多少。否则,他只会在绘制向量与均匀间隔的 x 轴向量时自欺欺人。
猜你喜欢
  • 2017-11-09
  • 2014-06-12
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多