这是一个简单的但我自己没有得到正确的答案。 我有一个带有NA和一个
的xts对象require(xts)
set.seed(21)
A <- xts(c(NA,NA,NA,1,NA,NA,NA,NA,NA,NA), Sys.Date()-10:1)
colnames(A) <- c("A")
我要搜索的是ifelse循环,它在1次出现后的5天内将A放入A中:
> A
A
2014-12-23 NA
2014-12-24 NA
2014-12-25 NA
2014-12-26 1
2014-12-27 NA
2014-12-28 NA
2014-12-29 NA
2014-12-30 NA
2014-12-31 0
2015-01-01 NA
如果偶然在第一个之后的5天(即2014-12-31 = 1)也有1,则应该保留1。
答案 0 :(得分:3)
lubridate
包具有days
功能,可以轻松地在给定日期添加天数。以下对我有用
library(lubridate)
dates.with.1 <- index(A[A==1])
plus.5.days <- dates.with.1 + days(5)
A[index(A) %in% plus.5.days & (is.na(A) | A!=1)] <- 0
最后一行的索引有点复杂,有一种更好的方法可以做到这一点。我不得不使用index
,因为直接使用日期编制索引不能与布尔索引结合使用。也就是说,以下内容不起作用:
A[plus.5.days & (is.na(A) | A!=1)] <- 0