On Feb 23, 2010, at 4:27 PM, Laura Rodriguez Murillo wrote:

Hi all,

I'd appreciate if anyone can help me with this...

I have a data frame that looks like this:

1 + name1 1 2 3
2 + name2 5 9 10
2 - name3 56 74 93
1 - name4 65 75 98

I need to rearrange this in a way so that the rows with  "1" in the
first column, and "-" in the second column; then columns 4 and 6
should switch places. That is, column 6 would be now column 4 and
column 4 would be column 6 (column 5 should stay as column 5)
In the same way, if the first column is "2" and the second is "+",
then the same rearrangement should be done.
Rows with the first two entries 1 + or 2 - should stay in the same order.
This should be done for each row independently.

Seems as though there should be a swap function or a fancy indexing solution that would do this but I am not coming up with anything particularly terse. Here is a beginning. You could assign these vectors to new columns (perhaps after (re-)making them numeric ) and delete the old columns if you needed to. Say your dataframe were called "ta":

> apply(ta, 1, function(x) ifelse( (x[1]==1 & x[2]=="-")|(x[1]==2 & x[2]=="+"), c(x[6],x[4]), c(x[4],x[6]) ))
[1] " 1" "10" "56" "98"
> apply(ta, 1, function(x) ifelse( (x[1]==1 & x[2]=="-")|(x[1]==2 & x[2]=="+"), c(x[4],x[6]) , c(x[6],x[4])))
[1] " 3" " 5" "93" "65"

--
David.

Thanks a lot for your help!

______________________________________________
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.

______________________________________________
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.

Reply via email to