Мой dataframe имеет временную метку с и без секунд, и случайное использование 0 перед месяцев и часов, то есть 01 или 1R: извлечь час из переменной формат временной метки
library(tidyverse)
df <- data_frame(cust=c('A','A','B','B'), timestamp=c('5/31/2016 1:03:12', '05/25/2016 01:06',
'6/16/2016 01:03', '12/30/2015 23:04:25'))
cust timestamp
A 5/31/2016 1:03:12
A 05/25/2016 01:06
B 6/16/2016 01:03
B 12/30/2015 23:04:25
Как извлечь часов в отдельный столбец? Желаемый результат:
cust timestamp hours
A 5/31/2016 1:03:12 1
A 05/25/2016 01:06 1
B 6/16/2016 9:03 9
B 12/30/2015 23:04:25 23
Я предпочитаю ответ с tidyverse и мутировать, но моя попытка не удается правильно извлечь часы:
df %>% mutate(hours=strptime(timestamp, '%H') %>% as.character())
# A tibble: 4 × 3
cust timestamp hours
<chr> <chr> <chr>
1 A 5/31/2016 1:03:12 2016-10-31 05:00:00
2 A 05/25/2016 01:06 2016-10-31 05:00:00
3 B 6/16/2016 01:03 2016-10-31 06:00:00
4 B 12/30/2015 23:04:25 2016-10-31 12:00:00
Вы пробовали преобразования «метку» в дата-время, прежде чем пытаться извлечь часы? Кажется, что 'as.POSIXct (df $ timestamp, format ="% m /% d /% Y% H:% M ")' может сделать трюк для вас, если вам не нужны секунды. – aosmith