[R] Range across a List

jim holtman jholtman at gmail.com
Wed Mar 26 22:19:11 CET 2008


I think something like this should work.  I will give you the range
for each date across all the data:

x <- do.call(rbind, pp2)
tapply(x$New.Price, x$Trade.Date, range)


On 3/26/08, Ravi S. Shankar <ravis at ambaresearch.com> wrote:
> To add more clarity to my question
>
> My data pp2 is a list
>
>  (pp2[[1]])
>      RIC Trade.Date Close.Price Currency.Code Convertion.Rate New.Price
> ABCD.SZ   2008/02/29       15.30           CNY          0.1408
> 2.154240
> ABCD.SZ   2008/01/31       15.27           CNY          0.1392
> 2.040048
> ABCD.SZ   2007/11/30       11.07           CNY          0.1357
> 1.502199
> ABCD.SZ   2007/10/31       10.89           CNY          0.1340
> 1.459260
> ABCD.SZ   2007/09/28       12.77           CNY          0.1334
> 1.703518
>
>  (pp2[[2]])
> RIC      Trade.Date   Close.Price Currency.Code Convertion.Rate
> New.Price
> PQRS.SZ   2008/02/29        9.27           CNY         0.1408   1.305216
> PQRS.SZ   2008/01/31        8.07           CNY         0.1392   1.123344
> PQRS.SZ   2007/12/31        8.76           CNY         0.1371   1.200996
> PQRS.SZ   2007/11/30        6.43           CNY         0.1357   0.872551
> PQRS.SZ   2007/10/31        6.80           CNY         0.1340   0.911200
> PQRS.SZ   2007/09/28        7.94           CNY         0.1334   1.059196
>
> And so on till (pp2[[1244]])
>
> Each of pp2[[i]] is a data frame. For each date I need to find the range
> of New.Price across the list
> i.e.for 2008/02/29   it would be
> max(pp2[[i]]$New.Price[1])-min(pp2[[i]]$New.Price[1]) where i ranges
> from 1 to 1244
>
> Thank you,
> Ravi
>
>
>
>
>
> -----Original Message-----
> From: markleeds at verizon.net [mailto:markleeds at verizon.net]
> Sent: Thursday, March 27, 2008 2:12 AM
> To: Ravi S. Shankar
> Subject: Re: [R] Range across a List
>
> >From: "Ravi S. Shankar" <ravis at ambaresearch.com>
> >Date: 2008/03/26 Wed PM 03:28:52 CDT
> >To: r-help at stat.math.ethz.ch
> >Subject: [R] Range across a List
>
> i think it's a dataframe ( it looks
> like one )  or convert it to
> one if it's not and then I think below should
> work.
>
> temp<-lapply(split(pp2,pp2$Trade.Date), function(.df)
> {
>  data.frame(.df$Trade.Date[1],range(.df$New.Price))
> })
>
> result<-do.call(rbind,temp)
>
> test it though because i didn't.
>
>
> >Hi R,
> >I have a list
> >> class(pp2)
> >[1] "list"
> >
> >> length(pp2)
> >[1] 1244
> >
> >It is in the below format
> >      RIC Trade.Date Close.Price Currency.Code Convertion.Rate
> New.Price
> >ABCD.SZ   2008/02/29       15.30        CNY          0.1408  2.154240
> >ABCD.SZ   2008/01/31       15.27        CNY          0.1392  2.125584
> >ABCD.SZ   2007/12/31       14.88        CNY          0.1371  2.040048
> >ABCD.SZ   2007/11/30       11.07        CNY          0.1357  1.502199
> >ABCD.SZ   2007/10/31       10.89        CNY          0.1340  1.459260
> >ABCD.SZ   2007/09/28       12.77        CNY          0.1334  1.703518
> >
> >I want to find the range of pp2$New.Price for length(pp2) for each date
> >Any help would be appreciated
> >
> >Thanks in advance
> >Ravi
> >
> >
> >This e-mail may contain confidential and/or privileged
> i...{{dropped:10}}
> >
> >______________________________________________
> >R-help at 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.
>
> This e-mail may contain confidential and/or privileged...{{dropped:16}}



More information about the R-help mailing list