我有一个为期多天的XTS对象,并且我试图创建一个指标,该指标一旦为true,则在一天的其余时间内保持为true。我正在尝试的方法(但它不起作用)是将na.locf函数与每日应用相结合:
output <- apply.daily(x, na.locf)
可复制的代码:
y <- as.xts(c(NA,NA,1,NA,NA,NA,NA,NA,NA),as.POSIXct(c(
"2010-01-05 00:00:00", "2010-01-05 00:04:00", "2010-01-05 00:08:00",
"2010-01-05 00:12:00", "2010-01-05 00:16:00", "2010-01-05 00:20:00",
"2010-01-06 00:00:00", "2010-01-06 00:04:00", "2010-01-06 00:08:00")))
期望的输出是在当天剩余的时间内复制“ 1”。所以:
y <- as.xts(c(NA,NA,1,1,1,1,NA,NA,NA),as.POSIXct(c(
"2010-01-05 00:00:00", "2010-01-05 00:04:00", "2010-01-05 00:08:00",
"2010-01-05 00:12:00", "2010-01-05 00:16:00", "2010-01-05 00:20:00",
"2010-01-06 00:00:00", "2010-01-06 00:04:00", "2010-01-06 00:08:00")))
一种选择是
y1 <- ave(y, as.Date(index(y)), FUN= function(x) na.locf(x, na.rm=FALSE))
y1
# [,1]
#2010-01-05 00:00:00 NA
#2010-01-05 00:04:00 NA
#2010-01-05 00:08:00 1
#2010-01-05 00:12:00 1
#2010-01-05 00:16:00 1
#2010-01-05 00:20:00 1
#2010-01-06 00:00:00 NA
#2010-01-06 00:04:00 NA
#2010-01-06 00:08:00 NA
str(y1)
# An ‘xts’ object on 2010-01-05/2010-01-06 00:08:00 containing:
# Data: num [1:9, 1] NA NA 1 1 1 1 NA NA NA
# Indexed by objects of class: [POSIXct,POSIXt] TZ:
# Original class: 'double'
# xts Attributes:
# NULL
str(y)
#An ‘xts’ object on 2010-01-05/2010-01-06 00:08:00 containing:
# Data: num [1:9, 1] NA NA 1 NA NA NA NA NA NA
# Indexed by objects of class: [POSIXct,POSIXt] TZ:
# Original class: 'double'
# xts Attributes:
# NULL
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句