Skip to content

misleading output after ordering data frame

3 messages · bogdan romocea, Thomas Lumley, Brian Ripley

#
Dear R users,

I have a data frame which I create with read.csv and then order by
date:
d <- na.omit(read.csv(...))
d <- d[order(as.Date(as.character(d$Date), format="%d-%b-%y"), 
	decreasing=F, na.last=F),]

My problem is that even though the data frame is ordered as
requested, the old row numbers are preserved. For example:

* Before sorting:
Date   Amt
1 5-Nov-04 87.07
2 4-Nov-04 85.80
3 3-Nov-04 82.90

* After sorting:
Date   Amt  
500 12-Nov-02 84.23
499 13-Nov-02 85.05
498 14-Nov-02 84.95

Is there a way to update the row numbers as well? It's not that
important, but I find it a bit confusing.

Thank you,
b.
#
On Mon, 8 Nov 2004, bogdan romocea wrote:

            
This is an important feature of R: the row names of a data frame stay 
fixed under subsetting or reordering.

You can change the rownames with eg

    rownames(d)<-1:nrow(d)

if you want to.


 	-thomas
#
It's your misinterpretion that is misleading, not the output.
Data frames have row *names* and not *numbers*.
On Mon, 8 Nov 2004, bogdan romocea wrote:

            
I assure you that not to preserve the row *names* would be very confusing
indeed.  In your example it might well be more usual to have the Date the 
row names.

If you just want to change the contents of the data frame, and keep the 
row and column names, use

d[] <- your rhs

Or use

row.names(d) <- seq(len=nrow(d))

to reset the row *names*.