假设我有两个时间序列
(x <- xts(c(5,4:10), Sys.Date()+3:10))
(y <- xts(1:6, Sys.Date()+1:6))
merge(x,y)
x y
2018-04-20 NA 1
2018-04-21 NA 2
2018-04-22 5 3
2018-04-23 4 4
2018-04-24 5 5
2018-04-25 6 6
2018-04-26 7 NA
2018-04-27 8 NA
2018-04-28 9 NA
2018-04-29 10 NA
如何获得一个时间序列,该时间序列采用 的值(y
如果存在),但x
仅y
在特定日期没有值时才回退?例如,我想要的值z
如下:
x y z
2018-04-20 NA 1 1
2018-04-21 NA 2 2
2018-04-22 5 3 3
2018-04-23 4 4 4
2018-04-24 5 5 5
2018-04-25 6 6 6
2018-04-26 7 NA 7
2018-04-27 8 NA 8
2018-04-28 9 NA 9
2018-04-29 10 NA 10
这是另一种解决方案,它不使用ifelse()
.
# Merge the two objects first
z <- merge(x,y)
# Create a new column from a copy of 'y'
z$z <- z$y
# Missing values in column 'z'
zNA <- is.na(z$z)
# Fill all missing values in column 'z' with values from column 'x'
z[zNA, "z"] <- z[zNA, "x"]
我个人避免,ifelse()
因为它返回的对象并不总是直观可预测的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句