【问题标题】:How to extrapolate/interpolate in R如何在 R 中外推/内插
【发布时间】:2020-06-15 18:50:11
【问题描述】:

我正在尝试内插/外推 NA 值。我拥有的数据集来自一个测量站,该测量站每 5 分钟测量 4 个深度的土壤温度。在此特定示例中,在 0 cm 深度变量和 1-5 cm 深度变量的测量结束时存在错误数据 (-888.88)。我将其转换为 NA。现在我的教授希望我对这个和我拥有的所有其他数据集进行插值/外推。我知道在最后一次观察之后推断出如此多的值可能在统计上不准确,但我试图至少想出一个工作代码。截至目前,我试图推断其中一个变量(SoilTemp_1.5cm)。最后一行运行,但是当我打开数据框时,NA 仍然存在。

library(dplyr)
library(Hmisc)

MyD <- read.csv("2319538_Bodentemp_braun_WILDKOGEL_17_18 - Copy.csv",header=TRUE, sep=";")

MyD$date <- as.Date(MyD$Date, "%d.%m.%Y")
MyD$datetime <- as.POSIXct(MyD$Date.Time..GMT.01.00, format = "%d.%m.%Y %H:%M")

MyD[,-c(1,2,3,4,9)][MyD[,-c(1,2,3,4,9)] == -888.88] <- NA #convert erroneous data to NA


MyD %>%  mutate(`SoilTemp_1.5cm`=approxExtrap(x=SoilTemp_5cm, y=SoilTemp_1.5cm, xout=SoilTemp_5cm)$y)

我也尝试过这种方式,当我转换为数据框时,它给了我一个包含很多列而不是行的 2 列表。我不会说这个 approxExtrap 语法让我有点困惑。

MyD1 <- approxExtrap(MyD$SoilTemp_5cm, MyD$SoilTemp_1.5cm,xout=MyD$SoilTemp_5cm)
MyD1

老实说,我不确定如何重现数据,所以这里是 dput() 输出 https://pastebin.com/NFZdmm4L 的 pastebin 链接。我试图包含尽可能多的输出。请记住,我在运行 dput() 时排除了一些列,因此代码 MyD[,-c(1,2,3,4,9)][MyD[,-c(1,2,3,4,9)] == -888.88] 可能会有所不同。无论如何,dput() 输出已经包含了 NA,所以你甚至可能不需要它。

提前致谢。

最好的问候,

佐林

【问题讨论】:

    标签: r dplyr interpolation zoo hmisc


    【解决方案1】:

    na.approx 将使用插值填充 NA,而 rule=2 将扩展第一个和最后一个值。

    library(zoo)
    
    x <- c(NA, 4, NA, 5, NA) # test input
    
    na.approx(x, rule = 2)
    ## [1] 4.0 4.0 4.5 5.0 5.0
    

    【讨论】:

    • 我运行以下代码,当我再次打开数据框时,什么也没发生。 library(zoo) MyD &lt;- read.csv("2319538_Bodentemp_braun_WILDKOGEL_17_18 - Copy.csv",header=TRUE, sep=";") MyD$date &lt;- as.Date(MyD$Date, "%d.%m.%Y") MyD$datetime &lt;- as.POSIXct(MyD$Date.Time..GMT.01.00, format = "%d.%m.%Y %H:%M") MyD[,-c(1,2,3,4,9)][MyD[,-c(1,2,3,4,9)] == -888.88] &lt;- NA na.approx(MyD$SoilTemp_1.5cm, rule=2) 还有一种方法可以将“SoilTemp_1.5cm”变量的插值/外推基于“SoilTemp_5cm”变量? “SoilTemp_5cm”变量没有缺失 NA。
    • 请阅读r标签页顶部的发布说明。特别是应该使用 dput 提供足以说明您的问题的输入的最小版本,以便它是可重现的。
    • 但是我提供了一个带有 dput() 输出的 pastebin 链接。如果你还没有看到它,请看我最初的帖子。如果你看过它并且你写这个的原因是因为 dput() 输出太大而你不喜欢,我会减少它。我认为提供尽可能大的样本量是一个好主意,以便外推结果尽可能接近真实数据集。
    • 问题应该是自包含的并简化为最小形式,以便响应者可以快速回答。
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 2019-05-08
    • 2014-03-08
    • 2021-08-21
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多