Как отсортировать данные кадра по дате - PullRequest
42 голосов
/ 06 июня 2011

Мне нужно отсортировать данные кадра по дате в R. Все даты в форме "дд / мм / гггг".Даты указаны в 3-й колонке.Заголовок столбца V3.Я видел, как сортировать данные по столбцам, и я видел, как преобразовать строку в значение даты.Я не могу объединить два для сортировки фрейма данных по дате.

Ответы [ 5 ]

110 голосов
/ 06 июня 2011

Предполагая, что ваш фрейм данных называется d,

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

Прочитайте мой пост в блоге, Сортировка фрейма данных по содержимому столбца , если это не делаетчувство.

21 голосов
/ 04 декабря 2015

В настоящее время наиболее эффективно и удобно использовать библиотеки lubridate и dplyr.

lubridate содержит ряд функций, которые упрощают анализ дат в POSIXct или Date объектах. Здесь мы используем dmy, который автоматически разбирает даты в Day, Month, Year форматах. Когда ваши данные представлены в формате даты, вы можете отсортировать их с помощью dplyr::arrange (или любой другой функции заказа):

d$V3 <- lubridate::dmy(d$V3)
dplyr::arrange(d, V3)
15 голосов
/ 15 июня 2014

Если вы хотите отсортировать даты в порядке убывания, знак минус не работает с датами.

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

Однако вы можете получить тот же эффект с помощью функции общего назначения: rev ().Поэтому вы смешиваете обороты и порядок следующим образом:

#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))),]

Надеюсь, это помогло.

2 голосов
/ 11 ноября 2017

Единственный способ, с помощью которого я нашел работу с часами, через формат US в источнике (мм-дд-гггг ЧЧ-ММ-СС PM / 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), ] 
2 голосов
/ 03 мая 2015

Если вы просто хотите переставить даты с самых старых на самые новые в r и т. Д., Вы всегда можете сделать:

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

Это спасло меня от экспорта в Excel только для сортировки данных Yahoo Finance.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...