IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Convertir des données numéric en temps


Sujet :

R

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut 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 !

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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,

Discussions similaires

  1. Réponses: 13
    Dernier message: 11/11/2008, 13h45
  2. Réponses: 5
    Dernier message: 21/12/2007, 08h24
  3. Réponses: 5
    Dernier message: 04/12/2007, 13h40
  4. jj hh mm : convertir des chiffres en un temps
    Par Hepil dans le forum Excel
    Réponses: 6
    Dernier message: 15/06/2007, 10h38
  5. Convertir des données selon un charset defini
    Par localhost dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2006, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo