There is probably a more ellegant way, but: > df <- data.frame(p1=c(1,2,1),p2=c(3,3,2),p3=c(2,1,3),p4=c(5,6,4),p5=c(4,4,6),p6=c(6,5,5)) > as.data.frame(t(apply(df,1,function(x) names(x)[match(1:6,x)]))) V1 V2 V3 V4 V5 V6 1 p1 p3 p2 p5 p4 p6 2 p3 p1 p2 p5 p6 p4 3 p1 p2 p3 p4 p6 p5 >
On Mon, Feb 13, 2012 at 2: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 > > Can anyone help? > > Thanks! > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.