[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