我的另一个关于“在 R 中使用线性插值添加丢失的 xts/zoo 数据”的问题,您可以在这里找到 Add missing xts/zoo data with linear interpolation in R

但总的来说,我的数据还有一个问题——我确实有没有意义的“错误”值:

"2012-04-09 05:03:00",2
"2012-04-09 05:04:00",4
"2012-04-09 05:05:39",-10
"2012-04-09 05:09:00",0
"2012-04-09 05:10:00",1

所以替换丢失的日期有效:
y <- merge(y, zoo(,seq(start(y),end(y),by="min")), all=TRUE)
y <- na.approx(y)

但是正如您所看到的,-10 没有意义,并且该值不在 min:sec 处,值为 00。我需要像 na.rm 这样的解决方案。
谢谢!

最佳答案

目前还不清楚你想做什么。但我猜你想从 xts 对象中删除一些异常值。如果您想要像“na.rm”这样的解决方案,一个想法是用 NA 替换不需要的值,然后使用 na.omit 删除它们。

x <- read.zoo(text='
"2012-04-09 05:03:00",2
"2012-04-09 05:04:00",4
"2012-04-09 05:05:39",-10
"2012-04-09 05:09:00",0
"2012-04-09 05:10:00",1',sep=',',tz='')

x[x == -10] <- NA
na.omit(x)

                    x
2012-04-09 05:03:00 2
2012-04-09 05:04:00 4
2012-04-09 05:09:00 0
2012-04-09 05:10:00 1

编辑

要获取每个日期的条件,您可以查看 index(x) 并对其进行格式化。
format(index(dat),'%S')
[1] "00" "00" "39" "00" "00"

但在这里我使用内置的 .indexsec (另见 .indexmin、.indexhour,..)
dat[.indexsec(dat) != 0]
2012-04-09 05:05:39
                -10

关于r - 使用 zoo/xts 删除 R 中的特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16014604/

10-12 19:52