【发布时间】:2019-11-25 14:02:23
【问题描述】:
我有一个与插值有关的问题。我有 2 列($1 是以秒为单位的时间,另一个海平面)。我尝试过的示例大多来自日期列,例如1970-11-11,但我有记录为秒,我想线性插值到分钟。采样最初是每 0.3 秒。有什么建议请教哪个包最好?在下文中,它生成了一个大矩阵,但没有按预期减少值的数量。格式只有 2 列。尝试在进一步分析中使用,不是每 0.1 秒而是每 1 分钟采样一次数据。
set.seed(1);
time <- rep(seq(0,180,by=0.1));
sl <-runif(1801,-0.1,4.0);
data1 <- cbind2(time,sl);
#Output needed...
time(min) sl(cm)
#Examples tried:
time<-data1$V1
SL<-data1$V2
seq1 <- zoo(order.by=((seq(min(time), max(time), by=30))))
mer1 <- merge(zoo(x=data1[1:2],order.by=time), seq1)
#Linear interpolation
dataL <- na.approx(mer1)
【问题讨论】:
-
检查是否可以使用
aggregate函数。 -
您能否提供一些示例数据来显示您正在查看的格式以及理想情况下所需的输出?
-
@Brian Fisher,谢谢你我加入了一个非常普遍的例子,不确定是否会有所帮助,但这是我想要做的事情的想法。另外,我会尝试移动平均线。
-
@Amber 你能解释一下你在寻找什么/你是如何得到想要的结果的吗?在您提供的示例中,输入被标记为秒,因此如果我们将其解释为一分钟的分数,并且您要插入的点位于1,已经有一个数据点(17.25),但是您的输出显示您得到 33,这超出了示例数据的范围。您想拟合曲线还是汇总数据?
-
对于这个例子,您应该提供至少 3 分钟的数据(可以模拟),以及您试图通过重采样实现的目标。您是要节省内存,还是要总结报告,还是要在进一步分析中使用?要回答哪个可能是最好的方法,您需要包括您的标准是什么(最快、最少代码、最符合实际测量值等)
标签: r time-series interpolation sampling