[R] Sorting Panel Data by Time

Dennis Murphy djmuser at gmail.com
Wed Nov 9 01:33:59 CET 2011


Here's another approach using the plyr and data.table packages, where
df is the name I gave to your example data:

# plyr
library('plyr')
ddply(df, .(TIME), mutate, L1 = sort(S1))

# Another way with the data.table package:
library('data.table')
dt <- data.table(df, key = 'TIME')
dt[, list(X1, S1, L1 = sort(S1)), by = 'TIME']

HTH,
Dennis

On Tue, Nov 8, 2011 at 11:58 AM, economicurtis <curtisesjunk at gmail.com> wrote:
> I have panel data in the following form:
>
> TIME   X1     S1
>  1       1      0.99
>  1       2      0.50
>  1       3      0.01
>  2       3      0.99
>  2       1      0.99
>  2       2      0.25
>  3       3      0.75
>  3       2      0.50
>  3       1      0.25
> ...      ...     ......
>
> And desire a new vector of observations in which one column (S1 above) is
> sorted for each second from least to largest.
>
> That is, a new vector (L1 below) of the form:
>
> TIME   X1     S1       L1
>  1       1      0.99    0.01
>  1       2      0.50    0.50
>  1       3      0.01    0.99
>  2       3      0.99    0.25
>  2       1      0.99    0.99
>  2       2      0.25    0.99
>  3       3      0.75    0.25
>  3       2      0.50    0.50
>  3       1      0.25    0.75
> ...      ...     ......    .....
>
> Sorry for the NOOB question, but any help would be great.
>
> Curtis Kephart
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Sorting-Panel-Data-by-Time-tp4017271p4017271.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list