Here's one: x <- xts(1:5, Sys.Date() + 1:5) y <- xts(rep(NA, length(x)), time(x))
or another, less direct but shorter: y <- cbind(x, NA)[,2] Michael On Wed, Apr 11, 2012 at 4:16 AM, jpm miao <miao...@gmail.com> wrote: > Hello, > > Thank you very much. > > How can I create an empty time series with the same dates as existing > time series? > > If x is a ts object, then it would be easy: > y<-ts(NA, start=start(x), end=end(x),frequency=frequency(x)) > > What can I do if x is a zoo or xts object? > I come up with a cumbersome way of doing this: > xts<-as.ts(x) > y1<-ts(NA, start=start(y), end=end(y),frequency=frequency(y)) > y<-as.xts(y1) > > Is there any easier way to do it? > > Thanks > > miao > > > 2012/4/11 R. Michael Weylandt <michael.weyla...@gmail.com> >> >> Two ways around this: >> >> I = Easy) Just use zoo/xts objects. ts objects a real pain in the >> proverbial donkey because of things like this. >> >> Something like: >> >> library(xts) >> PI1.yq <- as.xts(PI1) # Specialty class for quarterly data (or regular >> zoo works) >> lag(PI1.yq) >> >> II = Hard) lag on a ts actually changes the time indices while keeping >> all the data, [so the fourth data point is the same value -- just a >> different time point] what you may want to do is cbind() the objects >> to see how they line up now. >> >> cbind(PI1, lag(PI1,4)) >> >> Hope this helps, >> Michael >> >> On Tue, Apr 10, 2012 at 11:21 PM, jpm miao <miao...@gmail.com> wrote: >> > Hello, >> > >> > I am writing codes for time series computation but encountering some >> > problems >> > >> > Given the quarterly data from 1983Q1 to 1984Q2 >> > >> > PI1<-ts(c(2.747365190,2.791594762, -0.009953715, -0.015059485, >> > -1.190061246, -0.553031799, 0.686874720, 0.953911035), >> > start=c(1983,1), frequency=4) >> > >> >> PI1 >> > Qtr1 Qtr2 Qtr3 Qtr4 >> > 1983 2.747365190 2.791594762 -0.009953715 -0.015059485 >> > 1984 -1.190061246 -0.553031799 0.686874720 0.953911035 >> > >> > >> > If I would like to create a time series vector containing the data in >> > 4 >> > quarters ahead >> > >> >> PI4<-lag(PI1,4)> PI4 Qtr1 Qtr2 Qtr3 >> >> Qtr4 >> > 1982 2.747365190 2.791594762 -0.009953715 -0.015059485 >> > 1983 -1.190061246 -0.553031799 0.686874720 0.953911035 >> > >> > >> > Confusingly, PI1[1] and PI4[1] are exactly the same! I usually would >> > like to calculate the difference between the vector of interest and the >> > corresponding values 4 quarters ahead, but it is zero! >> > >> >> PI1[1][1] 2.747365> PI4[1][1] 2.747365 >> > >> > >> > One remedy that comes into my mind is to use window,but a warning >> > message >> > emerges >> > >> >> PI4w<-window(PI4, start=start(PI1), end=end(PI1))Warning message:In >> >> window.default(x, ...) : 'end' value not changed> PI4w Qtr1 >> >> Qtr2 Qtr3 Qtr4 >> > 1983 -1.1900612 -0.5530318 0.6868747 0.9539110 >> > >> > >> > Similar problems happen with the usage of the function "diff", which >> > calculate the difference. I wonder if it is better to work with the >> > dates >> > (1983Q1, 1983Q2,.....) directly? >> > >> > If I want to write a loop, say, to conduct some computation from >> > 1983Q1 >> > to 2011Q4, the only way I know is to convert the dates to the ordinal >> > indices, 1, 2, 3...... Can we work with the dates? Is there any built-in >> > equality that provides the computation like >> > 1983Q1 +1 equals 1983Q2? >> > In EViews, it is easy to do that. We can let %s run from 1983Q1 to >> > 2011Q4, and he knows that 1983Q1+1 is exactly 1983Q2. >> > >> > Thanks very much for your reply! >> > >> > miao >> > >> > [[alternative HTML version deleted]] >> > >> > ______________________________________________ >> > R-help@r-project.org mailing list >> > https://stat.ethz.ch/mailman/listinfo/r-help >> > PLEASE do read the posting guide >> > http://www.R-project.org/posting-guide.html >> > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.