我想知道如何使用R中的Savitzky-Golay过滤器来填补空白和平滑我的数据。这是我的代码,我的代码显示了NA作为结果:
library(signal)
sg <- sgolay(p=1, n=3, m=0)
PLOT1500$sg <- filter(sg, PLOT1500$evi21500)
PLOT1500$sg
NA:
PLOT1500 1500$sg 1 NA
我的数据示例如下:
structure(list(system = structure(c(1459641600, 1459728000, 1459814400,
1459900800, 1459987200, 1460073600, 1460160000, 1460246400, 1460332800,
1460419200), tzone = "UTC", class = c("POSIXct", "POSIXt")),
evi21500 = c(0.329, 0.328, NA, NA, NA, NA, NA, NA, NA, NA
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))
我想知道如何解决NA问题,填补空白,并平滑数据。
发布于 2021-12-07 13:14:50
我以前有过这个问题,如果你在dplyr之前加载信号的话,它就来了。稍后尝试加载信号。第二个问题是滤波器长度应该小于数据点数的奇数。
library(dplyr)
library(signal)
PLOT1500<-structure(list(`system:time_start` = structure(c(1451606400,
1451692800, 1451952000, 1452038400), tzone = "UTC", class = c("POSIXct",
"POSIXt")), evi1500 = c(0.437, NA, NA, 0.486), evi21500 = c(0.408,
0.434, 0.434, 0.423), kndvi1500 = c(0.429, 0.532, 0.532, 0.525
), ndvi1500 = c(0.724, 0.773, 0.773, 0.788), nirv1500 = c(0.172,
0.187, 0.187, 0.182), evi2500 = c(0.611, NA, NA, 0.579), evi22500 = c(0.576,
0.426, 0.426, 0.539), kndvi2500 = c(0.417, NA, NA, 0.443), ndvi2500 = c(0.781,
0.757, 0.757, 0.825), nirv2500 = c(0.286, 0.182, 0.182, 0.254
)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))
sg <- sgolay(p=1, n=3, m=0)
PLOT1500$sg <- filter(sg, PLOT1500$evi21500)
https://stackoverflow.com/questions/70259714
复制相似问题