[R] misleading output after ordering data frame
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Nov 8 18:36:27 CET 2004
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:
> 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:
> > d[1:3,]
> Date Amt
> 1 5-Nov-04 87.07
> 2 4-Nov-04 85.80
> 3 3-Nov-04 82.90
>
> * After sorting:
> > d[1:3,]
> 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.
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*.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list