【问题标题】:How do I interpolate a variable from one data frame to another matching time in R如何将变量从一个数据帧插入到 R 中的另一个匹配时间
【发布时间】:2014-07-17 03:34:50
【问题描述】:

我有来自两个独立温度数据记录器的数据。它们都有 TimeCelsius 作为列。下面的代码将重新创建来自两个数据记录器的 15 个值的子集。它们通常会关闭几秒钟。

Time <- as.POSIXct(c("2014-07-16 13:09:38", "2014-07-16 13:09:48", "2014-07-16 13:09:58", "2014-07-16 13:10:08", "2014-07-16 13:10:18", "2014-07-16 13:10:28", "2014-07-16 13:10:38", "2014-07-16 13:10:48", "2014-07-16 13:10:58", "2014-07-16 13:11:08", "2014-07-16 13:11:18", "2014-07-16 13:11:28", "2014-07-16 13:11:38", "2014-07-16 13:11:48", "2014-07-16 13:11:58"))
Celsius <- c(27.5, 27.5, 27.5, 28, 28, 28, 28, 28, 28.5, 28.5, 28.5, 28.5, 28.5, 29, 29)
df1 <- data.frame(Time,Celsius)
Time <-  as.POSIXct(c("2014-07-16 13:09:39", "2014-07-16 13:09:49", "2014-07-16 13:09:59", "2014-07-16 13:10:09", "2014-07-16 13:10:19", "2014-07-16 13:10:29", "2014-07-16 13:10:39", "2014-07-16 13:10:49", "2014-07-16 13:10:59", "2014-07-16 13:11:09", "2014-07-16 13:11:19", "2014-07-16 13:11:29", "2014-07-16 13:11:39", "2014-07-16 13:11:49", "2014-07-16 13:11:59"))
Celsius <- c(26.6666666666667, 26.6666666666667, 26.6666666666667, 27.2222222222222, 27.2222222222222, 27.2222222222222, 27.2222222222222, 27.7777777777778, 27.7777777777778, 27.7777777777778, 27.7777777777778, 27.7777777777778, 28.3333333333333, 28.3333333333333, 28.3333333333333)
df2 <- data.frame(Time,Celsius)

如何在第二个数据帧上插入(线性)摄氏度以匹配第一个数据帧中的时间?我可以在开始或结束。

【问题讨论】:

    标签: r time-series interpolation


    【解决方案1】:

    我认为approxfun 在这里会派上用场。首先,您要确保您的温度测量值是数字的。在您的样本中,由于某种原因,它们似乎是因素,因此您可以使用

    df1$Celsius<-as.numeric(as.character(df1$Celsius))
    df2$Celsius<-as.numeric(as.character(df2$Celsius))
    

    现在我们可以使用df2 上的approxfun 来定义从日期/时间到温度的转换函数。

    tx<-approxfun(df2$Time, df2$Celsius)
    

    然后在df1$Time 上使用该函数来预测df2 在每个df1 时间的温度

    tx(df1$Time)
    

    【讨论】:

    • 我编辑了问题,使其具有您建议的正确数值。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2023-03-25
    • 2021-04-03
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多