[R] Change dataframe-structure

Gabor Grothendieck ggrothendieck at gmail.com
Mon Feb 13 23:40:55 CET 2012


On Mon, Feb 13, 2012 at 5:07 PM, David Studer <studerov at gmail.com> wrote:
> Hello everybody,
>
> I have the following problem and have no idea how to solve it:
>
> In my dataframe I have six columns representing six societal problems (p1,
> p2, ..., p6).
> The values are ranks between 1 (worst problem) and 6 (best problem)
>
>
> p1 p2 p3  p4 p5 p6
> 1   3   2   5   4   6
> 2   3   1   6   4   5
> 1   2   3   4   6   5
>
> but I'd like the dataframe the other way round:
> 1    2    3    4    5    6
> p1  p3  p2  p4  p4  p6
> p3  p1  p2  p5  p6  p4
> p1  p2  p3  p4  p6  p5
>


First we read the data and then rearrange it into long form (DF) and
turn that into a 2d matrix (tapply):

Lines <- "p1 p2 p3  p4 p5 p6
1   3   2   5   4   6
2   3   1   6   4   5
1   2   3   4   6   5"
DF0 <- read.table(text = Lines, header = TRUE)

DF <-  as.data.frame.table(as.matrix(DF0), stringsAsFactors = FALSE,
	responseName = "Ranks")
tapply(DF[["Var2"]], DF[-2], c)

The result of the last statement is:

    Ranks
Var1 1    2    3    4    5    6
   A "p1" "p3" "p2" "p5" "p4" "p6"
   B "p3" "p1" "p2" "p5" "p6" "p4"
   C "p1" "p2" "p3" "p4" "p6" "p5"

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list