Convertir des données numéric en temps
Bonjour,
Je coince sur du script afin de convertir des données en temps :
1_ Je souhaite à partir d'une colonne 'min' et une deuxième' sec' créer une nouvelle colonne intitulé 'time' en format MM'SS
2_ Je souhaiterais convertir une colonne 'temps' en format character 00'00s afin de la passer en format temps MM'SS
Merci !
Convertir des données numériques en temps
Bonjour,
Je vous conseille d'investir dans le package lubridate.
À ma connaissance il n'existe pas de format time dans R.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| df <- data.frame(min = c(15,15,15,15),
sec = c(0,15,30,45))
df$time <- lubridate::parse_date_time(paste(df$min, df$sec), "%M:%S")
class(df$time)
#> [1] "POSIXct" "POSIXt"
df
#> min sec time
#> 1 15 0 0000-01-01 00:15:00
#> 2 15 15 0000-01-01 00:15:15
#> 3 15 30 0000-01-01 00:15:30
#> 4 15 45 0000-01-01 00:15:45 |
Notez que si vous appliquez un format, vous convertissez la variable en chaîne de caractères :
Code:
1 2 3 4 5 6 7 8 9
| df$time <- format(df$time, "%M'%S")
class(df$time)
#> [1] "character"
df
#> min sec time
#> 1 15 0 15'00
#> 2 15 15 15'15
#> 3 15 30 15'30
#> 4 15 45 15'45 |
Alternativement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| df$time <- lubridate::period(minute=df$min, second=df$sec)
str(df$time)
#> Formal class 'Period' [package "lubridate"] with 6 slots
#> ..@ .Data : num [1:4] 0 15 30 45
#> ..@ year : num [1:4] 0 0 0 0
#> ..@ month : num [1:4] 0 0 0 0
#> ..@ day : num [1:4] 0 0 0 0
#> ..@ hour : num [1:4] 0 0 0 0
#> ..@ minute: num [1:4] 15 15 15 15
df
#> min sec time
#> 1 15 0 15M 0S
#> 2 15 15 15M 15S
#> 3 15 30 15M 30S
#> 4 15 45 15M 45S |
Ou encore :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| df$time <- lubridate::ms(paste(df$min, df$sec))
str(df$time)
#> Formal class 'Period' [package "lubridate"] with 6 slots
#> ..@ .Data : num [1:4] 0 15 30 45
#> ..@ year : num [1:4] 0 0 0 0
#> ..@ month : num [1:4] 0 0 0 0
#> ..@ day : num [1:4] 0 0 0 0
#> ..@ hour : num [1:4] 0 0 0 0
#> ..@ minute: num [1:4] 15 15 15 15
df
#> min sec time
#> 1 15 0 15M 0S
#> 2 15 15 15M 15S
#> 3 15 30 15M 30S
#> 4 15 45 15M 45S |
Pour votre deuxième question :
Code:
1 2 3 4 5 6 7 8
| df <- data.frame(temps = c("15'00s", "15'15s", "15'30s", "15'45s"))
df$time <- lubridate::parse_date_time(df$temps, "%M:%S")
df
#> temps time
#> 1 15'00s 0000-01-01 00:15:00
#> 2 15'15s 0000-01-01 00:15:15
#> 3 15'30s 0000-01-01 00:15:30
#> 4 15'45s 0000-01-01 00:15:45 |
ou :
Code:
1 2 3 4 5 6 7 8 9 10
| df <- data.frame(temps = c("15'00s", "15'15s", "15'30s", "15'45s"))
df$time <- lubridate::ms(df$temps)
df
#> temps time
#> 1 15'00s 15M 0S
#> 2 15'15s 15M 15S
#> 3 15'30s 15M 30S
#> 4 15'45s 15M 45S
# Created on 2021-03-15 by the reprex package (v1.0.0.9002) |
Cordialement,