r - 使用 zoo/xts 删除 R 中的特定值

标签 r time-series xts zoo missing-data

我的另一个关于“在 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/

相关文章:

滚动平均成对相关性 - 代码无法按预期工作

r - 将表转换为向量以在r上使用hist()

r - 在ggplot2中添加加权最小二乘趋势线

pandas - Pandas 中不规则时间序列的rolling_sum?

python - Pandas - 从时间序列数据中按 10 毫秒聚合列

r - 在 R 中对齐多个时间序列

r - 使用 RScript 时如何调用plot.xts

r - 在 R 中创建唯一 ID 列

r - 为 `facet_wrap`中的每一列创建边框和标题

r - 从数据帧中的带时间戳的行分区和聚合间隔的有效方法是什么?