Отделен низ за дата и час за графика

Имам низ от дата и час като този:

> mydatetime
 [1] "2012-01-07 14:53:52 EST" "2012-01-07 07:57:03 EST"
 [3] "2012-01-07 17:42:28 EST" "2012-01-08 10:28:35 EST"
 [5] "2012-01-08 10:37:22 EST" "2012-01-09 08:12:00 EST"
 [7] "2012-01-09 08:11:44 EST" "2012-01-09 17:45:24 EST"
 [9] "2012-01-09 14:28:22 EST" "2012-01-09 13:14:38 EST"

Бих искал да отделя датата и часа в отделни обекти. Мога да получа успешно дата като:

> as.Date(mydatetime)
 [1] "2012-01-07" "2012-01-07" "2012-01-07" "2012-01-09" "2012-01-08"
 [6] "2012-01-08" "2012-01-08" "2012-01-09" "2012-01-09" "2012-01-09"

Как мога да извлека времевата част? Моята цел е да начертая дата на оста y и време на оста x, за да покажа времеви интервал за всеки ден. Изглежда, че функцията plot изисква специални формати, така че низовете няма да работят тук. Оценяват се и всякакви препоръки относно функциите за чертане в стил времева линия. Благодаря!

АКТУАЛИЗАЦИЯ

Отговорът на Саймън по-долу свърши работа за мен. Въпреки това, първо трябваше да изтегля подниза за дата от mydatetime, след което да използвам as.Date.

date <- as.Date(substr(mydatetime, 0,10))

По някаква причина имаше пет часа почивка. Например 2012-01-09 19:05:21 EST ще бъде преобразувано в 2012-01-10. Настройките ми за часова зона изглеждат добре и поставянето на този низ в as.Date директно даде 2012-01-09. Няма проблем, доволен съм от това решение. Благодаря.


person Banjer    schedule 10.01.2012    source източник


Отговори (1)


Има няколко начина - или да го третирате като низ:

time = as.POSIXct(substr(mydatetime, 12,19),format="%H:%M:%S")
plot(time, as.Date(mydatetime))

или изчислявате на датите:

time = .POSIXct(as.numeric(as.POSIXct(mydatetime)) %% 86400)
plot(time, as.Date(mydatetime))

Има фина разлика в получените диапазони на графиката.

person Simon Urbanek    schedule 10.01.2012
comment
Не мога да отделя време просто да бъда HMS. Все още получавам целия низ от дата: as.POSIXct(substr("2016-03-02 16:14:27", 12, 19), format="%H:%M:%S") дава "2016-03-16 16:14:27 EDT", когато искам само 16:14:27 - person yake84; 16.03.2016