Mon dataframe a horodatage avec et sans secondes, et une utilisation aléatoire de 0 devant des mois et des heures, soit 01 ou 1R: extrait heure de l'horodatage à format variable
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
Comment extraire heures dans un colonne séparée? La sortie souhaitée:
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
Je préfère la réponse avec tidyverse et muter, mais ma tentative ne parvient pas à extraire heures correctement:
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
Avez-vous essayé de convertir « horodatage » à une date-heure avant d'essayer d'extraire heures? On dirait que 'as.POSIXct (df $ timestamp, format ="% m /% d /% Y% H:% M ")' pourrait faire l'affaire pour vous si vous n'avez pas besoin des secondes. – aosmith