如何在R中进行外推内插计算

问题描述 投票:0回答:1

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

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的列表,它有很多列而不是行。我不会撒谎,这个aboutExtrap语法让我有点困惑。

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

老实说,我不知道如何重现数据,所以这里是一个dput()输出的pastebin链接。https:/pastebin.comNFZdmm4L. 我试着包含尽可能多的输出。在运行dput()时,我排除了一些列,所以代码是 MyD[,-c(1,2,3,4,9)][MyD[,-c(1,2,3,4,9)] == -888.88] 可能会有所不同。无论如何,dput()的输出已经包含了NAs,所以你可能根本不需要它。

先谢谢你。

最好的问候。

Zorin

r dplyr interpolation zoo hmisc
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.