On Mon, Feb 13, 2012 at 5:07 PM, David Studer <stude...@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 ______________________________________________ R-help@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.