Как отсортировать данные по дате
Мне нужно отсортировать кадр данных по дате в R. Даты составлены в виде «dd / mm / yyyy». Даты указаны в 3-й колонке. Заголовок столбца – V3. Я видел, как сортировать кадр данных по столбцу, и я видел, как преобразовать строку в значение даты. Я не могу объединить эти два, чтобы отсортировать данные по дате.
- Примеры случайных строк в области данных
- Разделить data.frame на основе уровней фактора в новые data.frames
- Оператор == несогласован в логических столбцах в data.table
- Ошибка в plot.new (): слишком большие значения полей в R
- Выполнить сценарий R из командной строки
- Рассчитать среднее значение группы (или другую итоговую статистику) и присвоить исходные данные
- Как изменить часовой пояс по умолчанию в R?
- Линейная регрессия с известным фиксированным перехватом в R
Предполагая, что ваш фрейм данных имеет имя d
,
d[order(as.Date(d$V3, format="%d/%m/%Y")),]
Прочтите мое сообщение в блоге, Сортировка кадра данных по содержимому столбца , если это не имеет смысла.
В настоящее время он наиболее эффективен и удобен в использовании библиотек lubridate и dplyr.
d$V3 <- lubridate::dmy(d$V3) dplyr::arrange(d, V3)
Если вы хотите сортировать даты с нисходящим порядком, знак минус не работает с датами.
out <- DF[rev(order(as.Date(DF$end))),]
Однако вы можете иметь тот же эффект с функцией общего назначения: rev (). Поэтому вы смешиваете 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))),]
Надеюсь, это помогло.
Если вы хотите изменить даты от самых старых до новейших в r и т. Д., Вы всегда можете сделать:
dataframe <- dataframe[nrow(dataframe):1,]
Это спасло меня от экспорта и выхода из Excel только для сортировки по данным Yahoo Finance.
Единственный способ, с которым я работал, работать с часами, через формат США в источнике (mm-dd-yyyy HH-MM-SS 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), ]