[R] Help with reshape/reShape and indexing

Gabor Grothendieck ggrothendieck at gmail.com
Wed May 13 14:01:50 CEST 2009


Try this:

DF$Index <- ave(1:nrow(DF), DF$Name, FUN = seq_along)
reshape(DF[-3], dir = "wide", idvar = "Name", timevar = "Index")

Also see the reshape package for another similar facility.



On Wed, May 13, 2009 at 2:02 AM, Dana Sevak <dana.sevak at yahoo.com> wrote:
>
> Dear R Helpers,
>
> I have trouble applying reShape and reshape although I read the documentation and several posts, so I would very much appreciate your help on the two points below.
>
> I have a dataframe
>
> df = data.frame(Name=c("a", "a", "a", "b", "b", "c"), X1=c("12", "13", "14", "20", "25", "30"), X2 = c(200, 250, 300, 600, 700, 4))
>
>> df
>  Name X1  X2
> 1    a 12 200
> 2    a 13 250
> 3    a 14 300
> 4    b 20 600
> 5    b 25 700
> 6    c 30 900
>
> First I need to add an additional column to this dataframe that will count the number of rows per each Name entry.  The resulting df should look like:
>
> df.index = data.frame(Name=c("a", "a", "a", "b", "b", "c"), X1=c(12, 13, 14, 20, 25, 30), X2 = c(200, 250, 300, 600, 700, 4), Index=c(1,2,3,1,2,1))
>
>> df.index
>  Name X1  X2    Index
> 1    a 12 200    1
> 2    a 13 250    2
> 3    a 14 300    3
> 4    b 20 600    1
> 5    b 25 700    2
> 6    c 30 900    1
>
> How can I do this?
>
>
> Secondly, I would like to reshape this dataframe in the form:
>
>> df2
>   1  2  3
> a 12 13 14
> b 20 25 NA
> c 30 NA NA
>
> Since the df is sorted by Name and X2, I would need that the available X1 values populate the resulting rows in df2 from left to right (i.e. if only one value is available, it is written in the first column and the remaining columns get NAs).  If I could generate the Index column, I think I could accomplish this with:
>
> df2 = reShape(df.index$X1, id=df.index$Name, colvar=df.index$Index)
> colnames(df2) = c("V1", "V2", "V3")
>
> However, is there a way to get to df2 without using the Index column and still have the NAs written as described above?
>
> Thank you so much for your help on these two issues.
>
> With best regards,
> Dana Sevak
>
> ______________________________________________
> 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