2016-04-07 1 views
1

У меня длинная серия временных меток POSIXct. Я хотел бы вернуться для каждой записи в день, включая день недели. Например:Как создать дневную часть в R из вектора временных меток POSIXct?

[1] Sunday night 
[2] Sunday night 
[3] Sunday afternoon 
[4] Saturday night 
[5] Sunday afternoon 

... и так далее.

Ниже приводится небольшая выборка данных:

my_dates <- as.POSIXct(c("2000-03-12 19:40:00 AEDT", 
          "2000-03-19 17:40:00 AEDT", 
          "2000-03-26 14:10:00 AEST", 
          "2000-04-01 19:40:00 AEST", 
          "2000-04-09 14:10:00 AEST", 
          "2000-04-16 14:40:00 AEST", 
          "2000-04-22 19:40:00 AEST", 
          "2000-04-30 14:10:00 AEST", 
          "2000-05-07 14:10:00 AEST", 
          "2000-05-14 14:10:00 AEST")) 

Я пробовал много разных вещей, но я всегда в конечном итоге потерять формат даты.

Любая помощь будет высоко оценена. Благодаря

+0

Вы всегда будете терять формат даты «воскресенье вечером» не является допустимым объектом даты. Это будет просто символьная строка. – thelatemail

+0

Я имею в виду, я теряю формат даты между операциями при преобразовании исходного вектора временных меток. –

ответ

1

Некоторые творческие format тин и cut тин должны быть в состоянии получить вас там:

paste(
    format(my_dates, "%A"), 
    c("night","morn","afternoon","night")[ 
    cut(as.numeric(format(my_dates,"%H")), c(0,5,11,17,23)) 
    ] 
) 
# [1] "Sunday night"  "Sunday afternoon" "Sunday afternoon" "Saturday night" 
# [5] "Sunday afternoon" "Sunday afternoon" "Saturday night" "Sunday afternoon" 
# [9] "Sunday afternoon" "Sunday afternoon" 
+0

Действительно элегантное решение, спасибо! –

Смежные вопросы