2011-06-05 16 views
33

Necesito ordenar un marco de datos por fecha en R. Todas las fechas tienen la forma de "dd/mm/aaaa". Las fechas están en la tercera columna. El encabezado de columna es V3. He visto cómo ordenar un cuadro de datos por columna y he visto cómo convertir la cadena en un valor de fecha. No puedo combinar los dos para ordenar el marco de datos por fecha.Cómo ordenar un marco de datos por fecha

Respuesta

88

Asumiendo que su trama de datos se denomina d,

d[order(as.Date(d$V3, format="%d/%m/%Y")),] 

leer mi blog, Sorting a data frame by the contents of a column, si eso no tiene sentido.

+0

@ 182Much trabajada perfectamente la primera vez. Muchas gracias – John

+0

@ John ¿qué hay de votar la respuesta? :) –

+0

@Prasad Chalasani Me alegraría, si supiera cómo – John

13

En caso de que desee ordenar las fechas en orden descendente, el signo menos no funciona con Fechas.

out <- DF[rev(order(as.Date(DF$end))),] 

Sin embargo, puede tener el mismo efecto con una función de propósito general: rev(). Por lo tanto, mezcle rev y ordene como:

#init data 
DF <- data.frame(ID=c('ID3', 'ID2','ID1'), end=c('4/1/09 12:00', '6/1/10 14:20', '1/1/11 11:10') 
#change order 
out <- DF[rev(order(as.Date(DF$end))),] 

Espero que haya ayudado.

3

Si lo que desea es reorganizar data de antiguo al más reciente en r, etc Siempre se puede hacer:

dataframe <- dataframe[nrow(dataframe):1,] 

Se me salvó la exportación dentro y fuera de sobresale sólo para una especie en los datos Yahoo Finanzas.

11

Hoy en día, es la biblioteca lubridate y dplyr más eficiente y cómoda de usar.

d$V3 <- lubridate::dmy(d$V3) 
dplyr::arrange(d, V3) 
0

La única manera que he encontrado para trabajar con horas, a través de un formato de Estados Unidos en la fuente (mm-dd-aaaa HH-MM-SS AM/AM) ...

df_dataSet$time <- as.POSIXct(df_dataSet$time , format = "%m/%d/%Y %I:%M:%S %p" , tz = "GMT") 
class(df_dataSet$time) 
df_dataSet <- df_dataSet[do.call(order, df_dataSet), ] 
Cuestiones relacionadas