#r #date #time
Вопрос:
Я объединил несколько других фреймов данных вместе. Однако теперь даты больше не находятся в хронологическом порядке (см. фото). Как заказать фрейм данных на основе значений столбца «Дата»?
R вывод фрейма данных, который я хочу изменить
Я сначала попытался установить столбец «Дата» в качестве индекса, но, поскольку столбец «Дата» не только имеет уникальные значения, я не могу этого сделать.
Всякий раз, когда я это делаю:
new_df <- new_df[order(new_df$Date),]
он сортирует даты только на основе их первого значения.
Кроме того, иногда для столбца «Дата» существует несколько одинаковых значений. Как я могу сделать индекс одинаковым, когда столбец «Дата» имеет одно и то же значение?
Ответ №1:
order
Должно основываться на преобразованном в Date
класс
new_df$Date1 <- as.Date(new_df$Date, "%A, %d %b %Y, %H:%M")
Если мы хотим сохранить и часть времени при заказе, используйте as.POSIXct
new_df$Date1 <- as.POSIXct(new_df$Date,format = "%A, %d %b %Y, %H:%M")
а потом сделайте
new_df <- new_df[order(new_df$Date1),]
Если мы хотим создать объект временных рядов, используйте xts
library(xts)
xts(new_df["Income"], order.by = new_df$Date1)
В качестве воспроизводимого примера
> str1 <- "Saturday, 12 Apr 2014, 18:00"
> as.Date(str1, "%A, %d %b %Y, %H:%M")
[1] "2014-04-12"
> as.POSIXct(str1, format = "%A, %d %b %Y, %H:%M")
[1] "2014-04-12 18:00:00 EDT"
Комментарии:
1. Спасибо, это сработало идеально. Можно ли также создать новый индекс на основе столбца Date1?
2. @Tobias ты хочешь заказать два заказа? Не совсем ясно
3. @Тобиас, ты имел в виду
library(xts)xts(new_df[, "Income"], order.by = new_df$Date1)
4. @
parse_date_time(str1, "%A, %d %b %Y, %H:%M")# [1] "2014-04-12 18:00:00 UTC"
TarJae тоже работает5. Не уверен, что это хорошо работает для меня с «str1», который я показал