[R] reshaping data.frame question

Matthias Braeunig mb.atelier at web.de
Tue Jun 27 07:24:37 CEST 2006


Thanks, this is not what what I meant. I need to reshape the original
dataframe that I can access p_f[X] for numerical X. Maybe I was not
clear enough.

The problem really is that X starts at 0. Note that in my example
changing the row names to 0:2 does not have the desired effect.



jim holtman wrote:
> You need to specify the row/column name as character:
> 
>> y
>   X1  X2  X3  X4
> 0 0.1 0.1 0.1 0.1
> 1 0.2 0.2 0.2 0.2
> 2 0.3 0.3 0.3 0.3
> 
>> y[,'X3']
> [1] 0.1 0.2 0.3
>> y['0','X3']
> [1] 0.1
> 
> 
> 
> 
> On 6/26/06, Matthias Braeunig <mb.atelier at web.de> wrote:
>>
> Dear R-helpers,
> 
> 
> my data.frame is of the form
> 
> x <- data.frame( f=gl(4,3), X=rep(0:2,4), p=c(.1,.2,.3))
> x
>   f X   p
> 1  1 0 0.1
> 2  1 1 0.2
> 3  1 2 0.3
> 4  2 0 0.1
> 5  2 1 0.2
> 6  2 2 0.3
> 7  3 0 0.1
> 8  3 1 0.2
> 9  3 2 0.3
> 10 4 0 0.1
> 11 4 1 0.2
> 12 4 2 0.3
> 
> which  tabulates some values p(X) for several factors f.
> 
> Now I want to put it in "wide" format, so that factor levels appear as
> column heads. Note also that X starts from zero. It would be nice if I
> could simply access p_f[X==0] as f[0]. How can I possibly do that?
> 
> (The resilting object does not have to be a data.frame. As there are
> only numeric values, also a matrix would do.)
> 
> I tried the following
> 
> y<-unstack(x,form=p~f)
> row.names(y) <- 0:2
> y
>   X1  X2  X3  X4
> 0 0.1 0.1 0.1 0.1
> 1 0.2 0.2 0.2 0.2
> 2 0.3 0.3 0.3 0.3
> 
> Now, how to access X3[0], say?
> 
> Maybe reshape would be the right tool, but I could not figure it out.
> 
> I appreciate your help. Thanks!



More information about the R-help mailing list