Преобразовать час: мин: сек столбец типа символа во время - PullRequest
0 голосов
/ 28 июня 2018

У меня есть столбец времени, который имеет тип символа. Я хочу преобразовать его в какой-то тип времени. Мне нравится использовать пакет lubridate, но мне не нравятся обозначения вывода. Моя цель - позже сгруппировать дату в час и подсчитать количество дел. df %>% group_by(floor_date(Tijd, "hour")).

Dataframe:

df <- structure(list(Tijd = c("01:00:00", "01:27:00", "09:25:00", "14:39:00", 
"15:35:00")), .Names = "Tijd", row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

Следующий код создает тип, в котором функция floor_date() не работает.

library(tidyverse)
library(lubridate)

df %>% 
  mutate(Tijd = hms(Tijd))

Выход:

# A tibble: 5 x 1
  Tijd        
  <S4: Period>
1 1H 0M 0S    
2 1H 27M 0S   
3 9H 25M 0S   
4 14H 39M 0S  
5 15H 35M 0S

Следующий код выдает ошибку:

df %>%
  mutate(Tijd = hms(Tijd)) %>%
  group_by(floor_date(Tijd, "hour"))

Error in mutate_impl(.data, dots) : 
  Evaluation error: 'origin' must be supplied.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Если вас интересует chron подход, тогда

library(dplyr)
library(chron)

df %>% 
  mutate(Tijd = hours(times(Tijd)))

дает

   Tijd
  <dbl>
1  1.00
2  1.00
3  9.00
4 14.0 
5 15.0 


Пример данных:

df <- structure(list(Tijd = c("01:00:00", "01:27:00", "09:25:00", "14:39:00", 
"15:35:00")), .Names = "Tijd", row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))
0 голосов
/ 28 июня 2018

Один из способов -

hr <- strptime(df$Tijd, format = '%H:%M:%S', 'GMT')
df$hr <- hour(hr)
...