【问题标题】:Interpolation for continous data in RR中连续数据的插值
【发布时间】:2014-06-19 17:02:05
【问题描述】:

我有一个样本数据如下:

data1 <- read.table(text="1/1/12 1:48 AM  1.24
1/1/12 8:14 AM  0.26
1/1/12 2:01 PM  1.15
1/1/12 8:25 PM  0.15
1/2/12 2:36 AM  1.23
1/2/12 9:13 AM  0.25
1/2/12 2:54 PM  1.09
1/2/12 9:17 PM  0.16
1/3/12 3:28 AM  1.24
1/3/12 10:06 AM 0.21
1/3/12 3:52 PM  1.07
1/3/12 10:05 PM 0.15
1/4/12 4:21 AM  1.27
1/4/12 10:56 AM 0.16
1/4/12 4:49 PM  1.08
1/4/12 10:52 PM 0.12
1/5/12 5:12 AM  1.32
1/5/12 11:43 AM 0.1
1/5/12 5:41 PM  1.12
1/5/12 11:37 PM 0.08
1/6/12 5:58 AM  1.38
1/6/12 12:28 PM 0.03
1/6/12 6:27 PM  1.17
", sep="", header=F)

    > head(data1)
      V1   V2 V3   V4           date
1 1/1/12 1:48 AM 1.24 1/1/12 1:48 AM
2 1/1/12 8:14 AM 0.26 1/1/12 8:14 AM
3 1/1/12 2:01 PM 1.15 1/1/12 2:01 PM
4 1/1/12 8:25 PM 0.15 1/1/12 8:25 PM
5 1/2/12 2:36 AM 1.23 1/2/12 2:36 AM
6 1/2/12 9:13 AM 0.25 1/2/12 9:13 AM

将3列合并为一列数据列

data1$date <- paste(data1$V1, data1$V2, data1$V3)

创建一个日期序列来进行插值

daterange <- seq(from=as.POSIXct("2012-1-1 00:00"), to = as.POSIXct("2012-1-6 00:00"), length.out =1200)

我想找到上面指定的日期范围的对应 V4 值。我想做线性插值。

【问题讨论】:

  • 您确定要线性插值吗?您的数据似乎根本不是线性的......
  • 我这里列出的数据是潮汐数据,即涨潮和退潮。我想加入这些点并找到它们之间的点。例如,第一行的数据是高潮数据,第二行是低潮数据。现在要做的主要事情是在每行之间找到点。您能建议在这里更适合哪种插值技术吗?
  • 您可以尝试查看余弦分析或自回归模型(ARMA 或 ARIMA)。如果您只想计算高点和低点之间的点(而不是进行预测),您只需要算术平均值。
  • 请记住,您的数据很可能过于欠采样,以至于任何插值都没有多大意义......

标签: r dataframe interpolation


【解决方案1】:

正如其他人所说,您可以使用approx(...) 在连续点之间进行插值,尽管这是否是一个好主意还有待商榷。

data1$posix <- as.POSIXct(data1$date,format="%m/%d/%y %I:%M %p")
df <- as.data.frame(with(data1,approx(posix,V4,n=1200)))  # colnames are "x", "y"
colnames(df) <- c("date","V4")
df$posix     <- as.POSIXct(df$date,origin="1970-01-01")

library(ggplot2)
ggplot()+
  geom_point(data=data1, aes(x=posix, y=V4), color="red", size=5)+
  geom_point(data=df,    aes(x=posix, y=V4), color="blue", size=1)+
  labs(x="Date")

注意对as.POSIXct(...) 的调用中的格式字符串。您必须使用%I(而不是%H)指定时间为12 小时格式,并且您必须指定字符串包含AM/PM(使用%p),否则您的字符时间将无法正确转换。 (不过,它们进行转换,而不会引发错误 - 所以要小心)。

【讨论】:

  • 感谢 jhoward 解释所有细节。是的,这是有争议的,因为它可能不是一个好主意。这可能对我将来也有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2016-01-03
  • 2021-12-20
  • 2021-05-08
  • 2018-11-28
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多