Tranformer une Date "%d/%m/%Y %H:%M" en Heure "%H:%M"

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Coralie Deniot
Messages : 20
Enregistré le : 04 Nov 2015, 08:09

Tranformer une Date "%d/%m/%Y %H:%M" en Heure "%H:%M"

Messagepar Coralie Deniot » 05 Juil 2017, 09:02

Bonjour,
Me revoilà avec une nouvelle question qui ne devrait pas être trop difficile :)

J'ai un jeu de donnée de ce type:

Code : Tout sélectionner

date.heure <- c("01/01/2017 8:00:00","01/01/2017 8:10:00","01/01/2017 8:25:00","01/01/2017 8:30:00", "01/01/2017 9:10:00")
poids <- c(20,20.5,22,21,30)
temperature <- c(15,16,20,18,26)
tab <- cbind(date.heure, poids, temperature)
tab


J'aimerais simplement rajouter une colonne "heure" dans laquelle on ne garde que l'heure de la date considérée pour obtenir le tableau suivant:

Code : Tout sélectionner

tab$heure <- c("8:00:00","8:10:00","8:25:00","8:30:00", "9:10:00")


Je profite de poser cette question pour rappeler une autre question posée dans "calcul de variation au cours du temps" pour laquelle je n'ai pas eu de réponse ... si quelqu'un peut m'aider... je sais que c'est assez délicat comme question, mais c'est un challenge ! ;)

Rappel QUESTION 2 : SOMMER LES VARIATION PAR PAS DE 30 MINUTES
Une fois obtenu le nouveau tableau avec les variation, j'aimerais le transformer. Il me faut sommer les variations ayant lieux dans les 30 minutes. Autrement dit, j'aimerais calculer les variations de poids et température toutes les 30 minutes. Le relevé des données n'étant pas toujours régulier dans le temps, je dois le réajuster par cette manipulation.
NB1: Si la variation de temps est déjà supérieure à 30 min on ne fait pas de somme et on laisse la ligne telle quelle
NB2: Si la somme des variations de temps n'est pas pile égale à 30 min, on peut autoriser une fourchette de 30min +/- 10min
NB3: Des lignes allant être supprimer en sommant, on gardera la "date heure" de la borne supérieure
(Voir un modèle du tableau final souhaité dans le code ci dessous)

Code : Tout sélectionner

#Fabrication du tableau de données
date.heure <- c("01/01/2017 8:00:00","01/01/2017 8:10:00","01/01/2017 8:25:00","01/01/2017 8:30:00", "01/01/2017 9:10:00")
poids <- c(20,20.5,22,21,30)
temperature <- c(15,16,20,18,26)
heure <- c("8:00:00","8:10:00","8:25:00","8:30:00", "9:10:00")
v.minute <- c(0,10,15,5,40)
v.poids <- c(0,0.5,1.5,-1,9)
v.temperature <- c(0,1,4,-2,8)
tab <- cbind(date.heure, poids, temperature, heure, v.minute, v.poids, v.temperature)
tab

#Nouveau tableau de données avec la colonne "somme pas de temps 30 min":
date.temps.30min <- c("01/01/2017 8:30:00", "01/01/2017 9:10:00") #On prend la date en borne supérieure
somme.minute <- c(0+10+15+5, 40)
somme.poids <- c(0+0.5+1.5-1, 9)
somme.temperature <- c(0+1+4-2, 8)
tab.30minute <- cbind(date.temps.30min, somme.minute, somme.poids, somme.temperature)
tab.30minute


Merci beaucoup pour votre aide !!! :)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Tranformer une Date "%d/%m/%Y %H:%M" en Heure "%H:%M"

Messagepar Logez Maxime » 05 Juil 2017, 14:02

Bonjour,

tout dépend du format dans lequel est stocké ta date. Si c'est un format POSIXct :

Code : Tout sélectionner

date.heure <- c("01/01/2017 8:00:00","01/01/2017 8:10:00","01/01/2017 8:25:00","01/01/2017 8:30:00", "01/01/2017 9:10:00")

date.heure <- as.POSIXct(date.heure, format = "%d/%m/%Y %H:%M:%S")
# ou dmy_hms(date.heure) avec le package lubridate
format(date.heure, "%H:%M:%S")


Si tu as du texte :

Code : Tout sélectionner

sub("^.+ ", "", date.heure)
Cordialement,
Maxime

Coralie Deniot
Messages : 20
Enregistré le : 04 Nov 2015, 08:09

Re: Tranformer une Date "%d/%m/%Y %H:%M" en Heure "%H:%M"

Messagepar Coralie Deniot » 05 Juil 2017, 15:30

Bonjour Maxime :)

Je te remercie pour ta réponse qui m'a permise d'avancer sur mon script. En espérant continuer à avoir de l'aide!

Bonne soirée :)


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité