首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Savitzky-Golay滤波器填补R中的空白和平滑数据

如何使用Savitzky-Golay滤波器填补R中的空白和平滑数据
EN

Stack Overflow用户
提问于 2021-12-07 11:56:50
回答 1查看 510关注 0票数 0

我想知道如何使用R中的Savitzky-Golay过滤器来填补空白和平滑我的数据。这是我的代码,我的代码显示了NA作为结果:

代码语言:javascript
运行
复制
library(signal)
sg <- sgolay(p=1, n=3, m=0)
PLOT1500$sg <- filter(sg, PLOT1500$evi21500)
PLOT1500$sg

NA:

PLOT1500 1500$sg 1 NA

我的数据示例如下:

代码语言:javascript
运行
复制
   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问题,填补空白,并平滑数据。

EN

Stack Overflow用户

发布于 2021-12-07 13:14:50

我以前有过这个问题,如果你在dplyr之前加载信号的话,它就来了。稍后尝试加载信号。第二个问题是滤波器长度应该小于数据点数的奇数。

代码语言:javascript
运行
复制
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)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70259714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档