Отображение времени в формате часов и минут с использованием пакета lubridate в R: Dataframe Issue

Когда я пытаюсь изменить формат данных времени на часы и минуты. Я могу добиться этого с помощью пакета lubridate в R. Я использую функцию hm(). Однако, когда я пытаюсь распечатать его в консоли, он работает нормально, как указано ниже. Но если я просматриваю свой фрейм данных, я вообще не вижу формат HMS, все, что я получаю, это набор 0. Я использую RStudio.

d1$cr_hr <- hm(d1$cr_time)
tail(d1$cr_hr,10)
## [1] "16H 11M 0S" "16H 14M 0S" "16H 15M 0S" "16H 17M 0S" "16H 19M 0S" "16H 22M 0S" "16H 25M 0S"
## [8] "16H 27M 0S" "16H 29M 0S" "16H 33M 0S"

tail(d1$cr_time)
[1] "16:19" "16:22" "16:25" "16:27" "16:29" "16:33"

person Shoaibkhanz    schedule 03.12.2014    source источник
comment
Пожалуйста, предоставьте dput(tail(d1$cr_hr,10)). И что именно не работает? View(d1$cr_hr)? Вы используете Rstudio? У них много багов в View, что вам дает utils::View(d1$cr_hr)?   -  person David Arenburg    schedule 03.12.2014
comment
Я обновил вопрос с описанием данных d1 $ cr_time, и я использую R Studio, но, как описано в hrbrmstr, данные точно в том же формате.   -  person Shoaibkhanz    schedule 03.12.2014


Ответы (1)


hm преобразует символьный или числовой вектор в объект Period. то есть:

str(hm("10:30"))
## Formal class 'Period' [package "lubridate"] with 6 slots
##   ..@ .Data : num 0
##   ..@ year  : num 0
##   ..@ month : num 0
##   ..@ day   : num 0
##   ..@ hour  : num 10
##   ..@ minute: num 30

таким образом, ваши нули. (см. ?"Period-class" в справке по смазке). Метод «print» Period просто делает его доступным для чтения в представлении консоли или R «print».

Мы понятия не имеем, как выглядит d1$cr_time, поскольку вы не предоставили образцы данных. Если это просто формат часов "H:M:S":

cr_time <- c("16:11:33", "16:14:33", "16:15:33", "16:17:33", "16:19:33", 
             "16:22:33", "16:25:33", "16:27:33", "16:29:33", "16:33:33")

тогда вы можете gsub просто перейти к "H:M":

gsub(":[[:digit:]]{2}$", "", cr_time)

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

person hrbrmstr    schedule 03.12.2014
comment
Я могу добиться того же, используя d1$cr_time‹-strftime(d1$cr_on, format=%H:%M), где d1$cr_on — формат даты и времени (POSIXct), но мне было интересно, смогу ли я получить текст (часы и минуты) около этих цифр. - person Shoaibkhanz; 03.12.2014
comment
Ваш ответ помог мне, это была проблема с форматом, поэтому я использовал приведенный ниже код, чтобы заставить его работать. d1$crtime<-format(d1$crtime,format="%H-%M") - person Shoaibkhanz; 13.03.2015