r - 如何在 R 中外推/内插
问题描述
我正在尝试内插/外推 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,因此您甚至可能不需要它。
提前致谢。
此致,
佐林
解决方案
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
推荐阅读
- android - 如何在 Mockk Kotlin 中测试异步功能
- laravel - 在 laravel 存储中保存原始图像和转换为 webp
- c# - Blazor RadzenDataGrid 显示对象名称,而不是值
- python - “这个插件不支持propagateSizeHints()”/在QDialog子类上调用`exec`
- ios - UISplitViewController PrimaryViewController 视图框架的值错误
- python - 将 IdentityServer4 作为 OAuth2 服务器添加到 Django API
- spring-boot - 我的控制器方法它正在加载数据并导出到另一个源,在这里我想让这个异步
- google-chrome - 如何在 chrome 中单击并选择使用 selenium 和 python 下载音频文件以获取此特定链接
- sql - 是否可以使用一个 SQL 来获得带有自定义列的自定义数据
- javascript - 如何将数据从组件传递到 getServerSideProps