【发布时间】: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