【发布时间】:2018-05-16 03:21:36
【问题描述】:
我有以下时间序列:
ts <- cbind(data.frame(date=seq(as.Date("2017/11/01"), by = "day", length.out = 30)),value=rep(5,30))
ts <- ts[order(ts$date, decreasing=T),]
我想通过以下在某些给定日期具有值的累积因子对其进行调整:
cf <- cbind(data.frame(date=as.Date(c("2017/11/28", "2017/11/25","2017/11/04","2017/09/25"))),cumfactor=c(0.8,0.7,0.6,.05))
这样,ts 上每个日期的值将乘以(调整)相应日期的 cf 上的 cumfactor,并且该 cumfactor 将用于后续(较早)日期,直到下一个 cumfactor 出现在较早的日期.如果 ts 中的第一个(最新)日期晚于第一个(最新)cumfactor 日期,则不应调整它们。
我正在寻找以下结果:
result <- cbind(data.frame(date=seq(as.Date("2017/11/01"), by = "day", length.out = 30)),value=c(3,3,3,3,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,4,4,4,5,5))
result <- result[order(result$date, decreasing=T),]
我的猜测是 for 循环可能是最好的选择,但我没有成功获得这个结果。
【问题讨论】:
标签: r loops dataframe time-series multiplication