[Résolu] Une petit problème de dates

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

Antoine Dujon
Messages : 48
Enregistré le : 06 Déc 2008, 19:08
Contact :

[Résolu] Une petit problème de dates

Messagepar Antoine Dujon » 22 Déc 2011, 21:23

Bonjour,

Je rencontre un petit soucis que je n'arrives pas à résoudre.

Je possède deux séries temporelles de données sous forme de deux data.frame. Le temps est exprimé sous la forme "Année-Mois-Jour Heure:Minutes:Secondes".

Je souhaiterais que pour une date donnée de la première série de données , R me trouve la date la plus proche disponible dans la seconde série de données et qu'il m'extrait du data.frame la ligne correpondante.

Pour le moment je gère mes données chronologiques avec le package Chron, mais je ne vois pas trop quel code utiliser pour réaliser cette opération. Je précise aussi que j'ai besoin d'une précision à la seconde pour cette opération (je ne peut pas simplement me limiter aux jours)

Auriez-vous une idée à me conseiller?

Merci beaucoup,

Cordialement,

Antoine DUJON


PS: Voici un exemple représentatif de mon jeux de données. On remarque que les acquisitions de données ne sont pas simultanées pour les deux séries temporelles d'ou le problème rencontré et décrit plus haut


Série temporelle 1:

Code : Tout sélectionner

                 Date Taille
1 2010-12-01 12:10:10     15
2 2010-12-05 14:00:27     20
3 2010-12-07 15:02:55     22


Série temporelle 2:

Code : Tout sélectionner

                 Date Taille
1 2010-12-02 12:15:18     21
2 2010-12-05 17:24:22     42
3 2010-12-15 14:52:25     54
Dr Antoine M. Dujon
Deakin University

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 23 Déc 2011, 11:14

Bonjour,

Pour ajouter une colonne à st1 qui indique le rang de st2 pour lequel les dates sont les plus proches, il semble que ceci fonctionne :

Code : Tout sélectionner

st1<-data.frame(Date=as.chron(c("2010-12-01 12:10:10","2010-12-05 14:00:27","2010-12-07 15:02:55")),taille=c(15,20,22))
 
st2<-data.frame(Date=as.chron(c("2010-12-02 12:15:18","2010-12-05 17:24:22","2010-12-15 14:52:25")),taille=c(21,42,54))


recherche_plus_proche<-function(x,dta){
rang_min<-which(abs((dta-x))==min(abs(dta-x)))
}

st1$rang_st2<-sapply(as.double(st1$Date),recherche_plus_proche,as.double(st2$Date))


Serge

Antoine Dujon
Messages : 48
Enregistré le : 06 Déc 2008, 19:08
Contact :

Messagepar Antoine Dujon » 26 Déc 2011, 14:14

Merci beaucoup pour votre réponse. Votre code est très instructif!!

Bonnes fêtes à vous!

Cordialement

Antoine
Dr Antoine M. Dujon
Deakin University


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité