[R] align() function missing in R ?

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Jun 29 15:24:36 CEST 2007


On Fri, 29 Jun 2007, Markus Loecher wrote:

> Thank you for your responses, I should have given an example of the 
> functionality I am looking for, here are three typical scenarios that I deal 
> with a lot in my work:
>
> - a regular timeseries with lots of missing values that I want to convert to 
> the corresponding regular time series with mssing values replaced by NAs, 
> e.g.:
>        x = timeSeries(c(0.5,0.2,0.3,0.4,0.3,0.2,0.3), pos = 
> c(1,2,5,8,9,12,14));
>        x.align = align(x, pos = 1:14, method = "NA");
> - a regular timeseries at a coarse scale which I want to linearly interpolate 
> to a finer time scale:
>        x = ts(1:10, frequency = 4);
>        x.align = align(x, frequency = 8, method = "interp")
> - an irregular timeseries which I want to linearly interpolate to a regular 
> time grid:
>        x = timeSeries(c(0.5,0.2,0.3,0.4,0.3,0.2,0.3), pos = 
> c(1,2.5,3.2,4.1,5.7,6.5,7.3));
>        x.align = align(x, pos = 1:7, method = "interp");
>
> I am wondering how to easily code such a function using only window, ts.union 
> and ts.intersect.

Well, the first and third are using timeSeries which is not in R, and more 
to the point there is no support for irregular time series in R itself.
But they seem nothing to do with alignment!

The first is easy by indexing

x.align <- ts(NA_real_, start=1, end=14)
x.align[c(1,2,5,8,9,12,14)] <- c(0.5,0.2,0.3,0.4,0.3,0.2,0.3)

The second and third you can do via approx:

x <- ts(1:10, frequency = 4)
x.align <- ts(approx(unclass(x), xout=seq(1, 10, 0.5))$y, frequency = 8)

pos <- c(1,2.5,3.2,4.1,5.7,6.5,7.3)
x <- c(0.5,0.2,0.3,0.4,0.3,0.2,0.3)
ts(approx(pos, x, 1:7)$y)

I suspect the first can also be done via package 'zoo', which is the sort 
of place I would expect to find this functionality.

>
> Thanks again,
> Markus
>
> At 03:52 AM 6/29/2007, Prof Brian Ripley wrote:
>> On Fri, 29 Jun 2007, Martin Maechler wrote:
>> 
>>> Hi Markus,
>>> 
>>> You can't assume that a typical R users knows much about S+.
>>> "R has been beyond S+ for a long time"
>>>   {{ :-) :-) please Insightful staff, don't start to jump at me !}}
>>> Even I, as a very long time S and Splus user (of the past:
>>> 1987--~1997), have never, I think, used align().
>>> 
>>> Can you give *reproducible examples* of what  align() does for you?
>>> Then, kind R users will typically show you simple ways to achieve the
>>> same.
>>> 
>>> Also: R is Free Software (i.e. open source and more), so
>>>      we'd be happy to accept offers of an align() function that
>>>      behaved compatibly (``or better'') than the S-plus one.
>>> Note however that you'd typically not be allowed to copy the
>>> S-plus implementation.
>> 
>> align() relates to the S4 time series classes introduced in S-PLUS 5 (or 
>> so, after 1997).  There are no comparable classes in base R, but there are 
>> in some of the addon packages - fCalendar has already been mentioned and 
>> there are others (see the CRAN Econometric task view).
>> 
>> window, ts.union and ts.intersect have done all the alignment on regular 
>> time series (class "ts") I have ever needed.
>> 
>>> 
>>> Martin
>>> 
>>> 
>>>>>>>> "ML" == Markus Loecher <markus at insightfromdata.com>
>>>>>>>>     on Thu, 28 Jun 2007 11:10:51 -0400 writes:
>>>
>>>    ML> Dear list members, I switched from Splus to R a few
>>>    ML> years ago and so far found no functionality missing.
>>>    ML> However, I am struggling to find the equivalent align()
>>>    ML> function for time series. I did find some reduced
>>>    ML> functionality such as alignDailySeries in
>>>    ML> package:fCalendar but the full capability of aligning
>>>    ML> two timeseries seems to be missing.  Could this be true
>>>    ML> ? I am sure there must be a need for this useful
>>>    ML> function.  Any help would be greatly appreciated.
>>>
>>>    ML> Thanks !
>>>
>>>    ML> Markus
>>> 
>>> ______________________________________________
>>> R-help at stat.math.ethz.ch 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.
>> 
>> --
>> Brian D. Ripley,                  ripley at stats.ox.ac.uk
>> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>> University of Oxford,             Tel:  +44 1865 272861 (self)
>> 1 South Parks Road,                     +44 1865 272866 (PA)
>> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list