Я пытаюсь интерполировать/экстраполировать значения NA. Набор данных, который у меня есть, получен с измерительной станции, которая измеряет температуру почвы на 4 глубинах каждые 5 минут. В этом конкретном примере имеются ошибочные данные (-888,88) в конце измерений для переменной глубины 0 см и переменной глубины 1-5 см. Я преобразовал это в 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, в котором много столбцов вместо строк, когда я конвертирую в фрейм данных. Не буду врать, что этот синтаксис auxExtrap меня немного смущает.
MyD1 <- approxExtrap(MyD$SoilTemp_5cm, MyD$SoilTemp_1.5cm,xout=MyD$SoilTemp_5cm)
MyD1
Честно говоря, я не уверен, как воспроизвести данные, поэтому вот ссылка pastebin вывода dput() https://pastebin.com/NFZdmm4L. Я попытался включить как можно больше вывода. Имейте в виду, что я исключил некоторые столбцы при запуске dput(), поэтому код MyD[,-c(1,2,3,4,9)][MyD[,-c(1,2,3,4,9)] == -888.88]
может отличаться. В любом случае, вывод dput() уже включает NA, поэтому он может вам даже не понадобиться.
Заранее спасибо.
С наилучшими пожеланиями,
Зорин