Protocole de formatage des données pour l'interface

Ce protocole permet de formater vos données au format csv selon le protocole exigé par l'interface. Nous supposons que l'information temporelle (dates et heures) se situent dans une seule cellule. L'heure n'est pas indispensable.

Vous devrez saisir les codes des 3 étapes ci-dessous dans un script ou console R : lecture, alignement, création. Vous pouvez utiliser le carré à droite du code ("copy to clipboard"). L'étape 2 d'alignement dépend de votre souhait d'échantillonnage, nous vous donnons quelques exemples : de 10 minutes, 20 minutes, 30 minutes, 1 jour, 1 semaine, 1 mois...

Pour plus d'explications sur les lignes de codes, voir le protocole avec l'exemple MAREL-Carnot (Exemple MAREL-Carnot).

Lecture du fichier

Définir son répertoire de travail (dossier dans lequel se trouve les données brutes) et les informations associés à vos données, nom du fichier, format des dates dans ce fichier, nom de la colonne contenant les dates, ...

Veuillez renseigner les "à remplir"

rm(list=ls(all=TRUE))
graphics.off()
repDonnees="A remplir"  #ex sous linux :~/Protocole_uHMM/MAREL-Carnot" 
setwd(repDonnees)
## Error in setwd(repDonnees): impossible de changer de répertoire de travail
nomfichier="A remplir" #nom Fichier ex MarelCarnot.csv 
nomDate="A remplir" # nom de la colonne de l'information temporelle

# format de votre colonne d=jour, m=mois,y=année en 2 chiffres Y pour 4
formatDate="A remplir " # ex %d/%m/%y %H:%M:%S" 
separateur="," # à changer au besoin
decimale="." # à changer au besoin

#lecture du fichier
df=read.csv(nomfichier,header=T,sep=separateur, dec=decimale)
## Warning in file(file, "rt"): impossible d'ouvrir le fichier 'A remplir' :
## Aucun fichier ou dossier de ce type
## Error in file(file, "rt"): impossible d'ouvrir la connexion
dim(df) # visualisation du nb observations et de colonnes
## NULL
names(df) # Visualisation des noms de toutes les colonnes de df.
## NULL
#formatage du temps au format machine POSIXct
idate=grep(pattern=nomDate, names(df),ignore.case=T)
date=as.character((df)[,idate])
## Error in (df)[, idate]: objet de type 'closure' non indiçable
df$temps=strptime(date, format=formatDate)
## Error in as.character(x): cannot coerce type 'closure' to vector of type 'character'

Noter que la date est extraite puis mise sous le format POSIXt (AAAA-MM-JJ hh:mm:ss). L'argument "format" reprend exactement le format initial de la colonne date.
%Y correspond aux années décrites par 4 chiffres comme 2017 sinon %y pour 17
%m correspopnd au mois
%d correpond au jour
%H correspond à l'heure
%M correspond aux miuntes
%S correspond aux secondes

Alignements

Le but de cet étape est de rendre régulière la série. Tout capteur sera synchronisé sur un pas unique (règle du max si le capteur répond deux fois dans le même intervalle). De plus, si un (ou plusieurs capteurs) n'a pas répondu à certains pas la donnée pour ce pas de temps manquant sera noté NA (not Available). Ceci permettra de calculer des taux de valeurs manquantes sur une durée, mieux estimer les probabilités d'apparition, ... Plusieurs exemples d'alignements avec des pas de temps différents sont détaillés : \((1 mois, 1 semaine, 1 journée, 1 heure, 30 minutes, 20 minutes, 10 minutes)\). A choisir en fonction de vos données d'origine et de l'interprétation à mener.

Alignement 1 mois

#etape a1 
date=format(df$temps,"%F")
## Error in df$temps: objet de type 'closure' non indiçable
mois=as.numeric(format(df$temps,"%m"))
## Error in df$temps: objet de type 'closure' non indiçable
df$temps=strptime(format(df$temps, "%Y-%m-15"),format="%Y-%m-%d")
## Error in df$temps: objet de type 'closure' non indiçable
#etape a2
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 month")
## Error in seq(min.date, max.date, by = "1 month"): objet 'min.date' introuvable
#etape a3
df2=data.frame(temps=as.POSIXct(a))
## Error in as.POSIXct(a): objet 'a' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
#etape a4
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") # possible de selectionner manuellement ex numPara=3:6
## Error in which(classe == "numeric"): objet 'classe' introuvable
df1.M=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
                FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
                {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df1.M$temps=strptime(df1.M$temps,format="%Y-%m-%d")
## Error in strptime(df1.M$temps, format = "%Y-%m-%d"): objet 'df1.M' introuvable
dfa=df1.M
## Error in eval(expr, envir, enclos): objet 'df1.M' introuvable
#Suppressions des données inutiles pour la suite.
rm(date); rm(mois); rm(min.date); rm(max.date); rm(a); rm(df2); rm(df1); rm(numPara); rm(df1.M)
## Warning in rm(date): objet 'date' introuvable
## Warning in rm(mois): objet 'mois' introuvable
## Warning in rm(min.date): objet 'min.date' introuvable
## Warning in rm(max.date): objet 'max.date' introuvable
## Warning in rm(a): objet 'a' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(numPara): objet 'numPara' introuvable

## Warning in rm(df1.M): objet 'df1.M' introuvable
Explications de chaque étape

(a1) Extraction de la date (grâce aux "%F" qui correspond AAAA-MM-JJ) dans un vecteur nommé date. Et extraction du mois de chaque acquisition dans un autre vecteur nommé mois.
Nous considérons le moment de l'acquisition égale au 15 ème jour de chaque mois, il est ensuite mis sous format POSIXt.

(a2)La création de la séquence "a", qui va de la date la plus ancienne à la plus récente. De plus, la fréquence est insérer par l'argument "by".

(a3) Création du tableau, en y incluant seulement le vecteur "a".
Puis fusion du tableau avec le tableau de donnée brute initial (df1).

(a4) Sélection des colonnes contenant que l'on souhaite agrégée. Attention ces colonnes doivent être de type numérique. Voici comment voir la classe des paramètres. De ce nouveau tableau seulement les colonnes voulues sont extraites, et on ne garde que la valeur maximum des doublons créés.

Alignement 1 semaine

Extraction de l'année pour toutes les acquisitions.
Le numéro du jour est repéré. C'est à dire donne le jour en Julien (exemple: le 1 er février correspond au 32ème jour de l'année).
Les données acquisent tous les 7 jours sont saisies, en commencant toujours par le 1er jours de l'année.

annees=format(df$temps,"%Y")
## Error in df$temps: objet de type 'closure' non indiçable
numJour=as.numeric(strftime(df$temps, "%j"))
## Error in df$temps: objet de type 'closure' non indiçable
numJourSemaine=seq(1,364,by=7)
numJourT=sapply(numJour,function(x){index=max(which(x>=numJourSemaine));return(numJourSemaine[index])})
## Error in lapply(X = X, FUN = FUN, ...): objet 'numJour' introuvable
df$temps=strptime(paste(numJourT,annees,sep=" "), "%j %Y")
## Error in paste(numJourT, annees, sep = " "): objet 'numJourT' introuvable
a=as.character(sort(unique(as.numeric(annees))))
## Error in unique(as.numeric(annees)): objet 'annees' introuvable
date=rep(a,each=52)
## Error in eval(expr, envir, enclos): objet 'a' introuvable
jour=rep(seq(1,364,by=7), length(a))
## Error in eval(expr, envir, enclos): objet 'a' introuvable
d=paste(date,jour,sep="-")
## Error in paste(date, jour, sep = "-"): objet 'jour' introuvable
df2=data.frame(temps=strptime(d,format="%Y-%j"))
## Error in strptime(d, format = "%Y-%j"): objet 'd' introuvable
df1=merge(df,df2, by=intersect(names(df),names(df2)),all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric")
## Error in which(classe == "numeric"): objet 'classe' introuvable
df1.W=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
               FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
               {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df1.W$temps=strptime(df1.W$temps,format="%Y-%m-%d")
## Error in strptime(df1.W$temps, format = "%Y-%m-%d"): objet 'df1.W' introuvable
dfa=df1.W
## Error in eval(expr, envir, enclos): objet 'df1.W' introuvable
rm(df1); rm(df2); rm(numPara); rm(df1.W); rm(d); rm(jour); rm(a); rm(date)
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(numPara): objet 'numPara' introuvable
## Warning in rm(df1.W): objet 'df1.W' introuvable
## Warning in rm(d): objet 'd' introuvable
## Warning in rm(jour): objet 'jour' introuvable
## Warning in rm(a): objet 'a' introuvable

## Warning in rm(date): objet 'date' introuvable
Détail : Les valeurs enregistrées entre le 1er et le 7ème jour seront considérées comme acquises le 1er jour. Les valeurs enregistrées entre le 8ème et le 15ème jour seront considérées comme acquises le 8 ème jour, etc. Une contrainte est rajoutée pour les derniers jours, car il est fixé qu'il ne peut pas avoir plus de 52 semaines par an. Les valeurs enregistrées au delà de la 51ème semaine (358 jours) seront alors assignées à la dernière semaine. C'est-à-dire les jours allant de 358 à 366.

Alignement 1 journée

Seule la date est également utile elle est mise en format POSIXt en supprimant les heures, minutes et les secondes si présente.

date=format(df$temps,"%F")
## Error in df$temps: objet de type 'closure' non indiçable
jours=as.numeric(format(df$temps,"%d"))
## Error in df$temps: objet de type 'closure' non indiçable
df$temps=strptime(format(df$temps, "%F"),format="%Y-%m-%d")
## Error in df$temps: objet de type 'closure' non indiçable
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 day")
## Error in seq(min.date, max.date, by = "1 day"): objet 'min.date' introuvable
d=format(a,"%F")
## Error in format(a, "%F"): objet 'a' introuvable
df2=data.frame(temps=strptime(d,format="%Y-%m-%d"))
## Error in strptime(d, format = "%Y-%m-%d"): objet 'd' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") 
## Error in which(classe == "numeric"): objet 'classe' introuvable
df.J=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
                FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
                {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df.J$temps=strptime(df.J$temps,format="%Y-%m-%d")
## Error in strptime(df.J$temps, format = "%Y-%m-%d"): objet 'df.J' introuvable
dfa=df.J
## Error in eval(expr, envir, enclos): objet 'df.J' introuvable
rm(date); rm(jours); rm(min.date); rm(max.date); rm(a); rm(df2); rm(df1); rm(d); rm(df.J)
## Warning in rm(date): objet 'date' introuvable
## Warning in rm(jours): objet 'jours' introuvable
## Warning in rm(min.date): objet 'min.date' introuvable
## Warning in rm(max.date): objet 'max.date' introuvable
## Warning in rm(a): objet 'a' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(d): objet 'd' introuvable
## Warning in rm(df.J): objet 'df.J' introuvable

Alignement 1 heure

La date et l'heure sont formatées telles que les minutes et les secondes soient considérées nulles HH:00:00. De plus, le format POSIXt est de nouveau imposé.

date=format(df$temps,"%F")
## Error in df$temps: objet de type 'closure' non indiçable
heures=as.numeric(format(df$temps,"%H"))
## Error in df$temps: objet de type 'closure' non indiçable
df$temps=strptime(format(df$temps, "%F %H:00:00"),format="%Y-%m-%d %H:%M:%S")
## Error in df$temps: objet de type 'closure' non indiçable
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 hour")
## Error in seq(min.date, max.date, by = "1 hour"): objet 'min.date' introuvable
df2=data.frame(temps=strptime(a,format="%Y-%m-%d %H:%M:%S"))
## Error in strptime(a, format = "%Y-%m-%d %H:%M:%S"): objet 'a' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") # colonnes séléctionnées : 5 à 26
## Error in which(classe == "numeric"): objet 'classe' introuvable
df.H=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
             FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
            {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df.H$temps=strptime(df.H$temps,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(df.H$temps, format = "%Y-%m-%d %H:%M:%S"): objet 'df.H' introuvable
dfa=df.H
## Error in eval(expr, envir, enclos): objet 'df.H' introuvable
rm(date); rm(heures); rm(min.date); rm(max.date); rm(a); rm(df2); rm(df1); rm(numPara); rm(df10)
## Warning in rm(date): objet 'date' introuvable
## Warning in rm(heures): objet 'heures' introuvable
## Warning in rm(min.date): objet 'min.date' introuvable
## Warning in rm(max.date): objet 'max.date' introuvable
## Warning in rm(a): objet 'a' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(numPara): objet 'numPara' introuvable
## Warning in rm(df10): objet 'df10' introuvable

Alignement 30 minutes

On considère que [hh:00, hh:29[= hh:15 et [hh:30, hh:59[= hh:45.

date=format(df$temps,"%F %H")
## Error in df$temps: objet de type 'closure' non indiçable
minutes=as.numeric(format(df$temps,"%M"))
## Error in df$temps: objet de type 'closure' non indiçable
minute=rep("45",length(minutes));
## Error in eval(expr, envir, enclos): objet 'minutes' introuvable
minute[minutes<30]="15"
## Error in minute[minutes < 30] = "15": objet 'minute' introuvable
d=paste(date,minute,"00",sep=":")
## Error in paste(date, minute, "00", sep = ":"): objet 'minute' introuvable
df$temps=strptime(d,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 hour")
## Error in seq(min.date, max.date, by = "1 hour"): objet 'min.date' introuvable
date=rep(format(a,"%F %H"),each=2)
## Error in format(a, "%F %H"): objet 'a' introuvable
minutes=rep(c("15","45"), length(a))
## Error in eval(expr, envir, enclos): objet 'a' introuvable
d=paste(date,minutes,"00",sep=":")
## Error in paste(date, minutes, "00", sep = ":"): objet 'minutes' introuvable
df2=data.frame(temps=strptime(d,format="%Y-%m-%d %H:%M:%S"))
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") # colonnes séléctionnées : 5 à 26
## Error in which(classe == "numeric"): objet 'classe' introuvable
df30=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
             FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
            {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df30$temps=strptime(df30$temps,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(df30$temps, format = "%Y-%m-%d %H:%M:%S"): objet 'df30' introuvable
dfa=df30
## Error in eval(expr, envir, enclos): objet 'df30' introuvable
rm(date); rm(minutes); rm(minute); rm(min.date); rm(max.date); rm(a); rm(d); rm(df2); rm(df1); rm(numPara); rm(df30)
## Warning in rm(date): objet 'date' introuvable
## Warning in rm(minutes): objet 'minutes' introuvable
## Warning in rm(minute): objet 'minute' introuvable
## Warning in rm(min.date): objet 'min.date' introuvable
## Warning in rm(max.date): objet 'max.date' introuvable
## Warning in rm(a): objet 'a' introuvable
## Warning in rm(d): objet 'd' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(numPara): objet 'numPara' introuvable
## Warning in rm(df30): objet 'df30' introuvable

Alignement 20 minutes

On considère que [hh:00, hh:20[= hh:10, [hh:20, hh:40[= hh:30 et pour [hh:40, hh:59]= hh:50.

date=format(df$temps,"%F %H")
## Error in df$temps: objet de type 'closure' non indiçable
minutes=as.numeric(format(df$temps,"%M"))
## Error in df$temps: objet de type 'closure' non indiçable
minute=rep("10",length(minutes))
## Error in eval(expr, envir, enclos): objet 'minutes' introuvable
minute[minutes>19]="30"
## Error in minute[minutes > 19] = "30": objet 'minute' introuvable
minute[minutes>40]="50"
## Error in minute[minutes > 40] = "50": objet 'minute' introuvable
d=paste(date,minute,"00",sep=":")
## Error in paste(date, minute, "00", sep = ":"): objet 'minute' introuvable
df$temps=strptime(d,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 hour")
## Error in seq(min.date, max.date, by = "1 hour"): objet 'min.date' introuvable
date=rep(format(a,"%F %H"),each=3)
## Error in format(a, "%F %H"): objet 'a' introuvable
minutes=rep(c("10","30","50"), length(a))
## Error in eval(expr, envir, enclos): objet 'a' introuvable
d=paste(date,minutes,"00",sep=":")
## Error in paste(date, minutes, "00", sep = ":"): objet 'minutes' introuvable
df2=data.frame(temps=strptime(d,format="%Y-%m-%d %H:%M:%S"))
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") # colonnes séléctionnées : 5 à 26
## Error in which(classe == "numeric"): objet 'classe' introuvable
df20=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
             FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
            {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
df20$temps=strptime(df20$temps,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(df20$temps, format = "%Y-%m-%d %H:%M:%S"): objet 'df20' introuvable
dfa=df20
## Error in eval(expr, envir, enclos): objet 'df20' introuvable
rm(date); rm(minutes); rm(minute); rm(min.date); rm(max.date); rm(a); rm(d); rm(df2); rm(df1); rm(numPara); rm(df20)
## Warning in rm(date): objet 'date' introuvable
## Warning in rm(minutes): objet 'minutes' introuvable
## Warning in rm(minute): objet 'minute' introuvable
## Warning in rm(min.date): objet 'min.date' introuvable
## Warning in rm(max.date): objet 'max.date' introuvable
## Warning in rm(a): objet 'a' introuvable
## Warning in rm(d): objet 'd' introuvable
## Warning in rm(df2): objet 'df2' introuvable
## Warning in rm(df1): objet 'df1' introuvable
## Warning in rm(numPara): objet 'numPara' introuvable
## Warning in rm(df20): objet 'df20' introuvable

Alignement 10 minutes

On considère que [hh:00, hh:10[= hh:05, [hh:10, hh:20[= hh:15, [hh:20, hh:30[= hh:25, [hh:30, hh:40[= hh:35, [hh:40, hh:50]= hh:45 et pour [hh:50, hh:59]= hh:55.

date=format(df$temps,"%F %H")
## Error in df$temps: objet de type 'closure' non indiçable
minutes=as.numeric(format(df$temps,"%M"))
## Error in df$temps: objet de type 'closure' non indiçable
minute=rep("05",length(minutes))
## Error in eval(expr, envir, enclos): objet 'minutes' introuvable
minute[minutes>10]="15"
## Error in minute[minutes > 10] = "15": objet 'minute' introuvable
minute[minutes>20]="25"
## Error in minute[minutes > 20] = "25": objet 'minute' introuvable
minute[minutes>30]="35"
## Error in minute[minutes > 30] = "35": objet 'minute' introuvable
minute[minutes>40]="45"
## Error in minute[minutes > 40] = "45": objet 'minute' introuvable
minute[minutes>50]="55"
## Error in minute[minutes > 50] = "55": objet 'minute' introuvable
d=paste(date,minute,"00",sep=":")
## Error in paste(date, minute, "00", sep = ":"): objet 'minute' introuvable
df$temps=strptime(d,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
min.date=min(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
max.date=max(df$temps,na.rm=T)
## Error in df$temps: objet de type 'closure' non indiçable
a=seq(min.date,max.date,by="1 hour")
## Error in seq(min.date, max.date, by = "1 hour"): objet 'min.date' introuvable
date=rep(format(a,"%F %H"),each=6)
## Error in format(a, "%F %H"): objet 'a' introuvable
minutes=rep(c("05", "15","25", "35", "45", "55"), length(a))
## Error in eval(expr, envir, enclos): objet 'a' introuvable
d=paste(date,minutes,"00",sep=":")
## Error in paste(date, minutes, "00", sep = ":"): objet 'minutes' introuvable
df2=data.frame(temps=strptime(d,format="%Y-%m-%d %H:%M:%S"))
## Error in strptime(d, format = "%Y-%m-%d %H:%M:%S"): objet 'd' introuvable
df1=merge(df,df2, all=TRUE)
## Error in as.data.frame.default(x): cannot coerce class ""function"" to a data.frame
classe=sapply(df1, FUN=class)
## Error in lapply(X = X, FUN = FUN, ...): objet 'df1' introuvable
numPara=which(classe == "numeric") # colonnes séléctionnées : 5 à 26
## Error in which(classe == "numeric"): objet 'classe' introuvable
dfa=aggregate(df1[,numPara],by=list(temps=as.character(df1$temps)),
             FUN=function(x){ out=NA; if(sum(is.na(x))<length(x))
            {out=max(x,na.rm=T);}; out})
## Error in aggregate(df1[, numPara], by = list(temps = as.character(df1$temps)), : objet 'df1' introuvable
dfa$temps=strptime(dfa$temps,format="%Y-%m-%d %H:%M:%S")
## Error in strptime(dfa$temps, format = "%Y-%m-%d %H:%M:%S"): objet 'dfa' introuvable

Création du fichier compatible avec uHMM

L'interface uHMM exige certaine condition supplémentaire de l'alignement. Il faut avoir une colonne contenant que la date et une autre colonne contenant les heures. Pour cela, la création de 2 vecteurs est essentielle, l'un contenant la date et l'autre contenant l'heure.
"dfa" étant votre tableau de données alignées que vous souhaitez faire lire par l'interface. "%F" retire les années, le mois et le jour (AAAA-MM-JJ) et "%X" retire les heures, les minutes et les secondes (hh:mm:ss). Reste alors à créer ensuite le fichier compatible avec l'interface au format compatible.

colonneDate=as.character(format(dfa$temps,"%F"))
## Error in format(dfa$temps, "%F"): objet 'dfa' introuvable
colonneHeure=as.character(format(dfa$temps,"%X"))
## Error in format(dfa$temps, "%X"): objet 'dfa' introuvable
iTemps=grep(pattern="temps",names(dfa))
## Error in grep(pattern = "temps", names(dfa)): objet 'dfa' introuvable
df.uHMM=data.frame(Dates=colonneDate,Hours=colonneHeure,(dfa[,-iTemps]))
## Error in data.frame(Dates = colonneDate, Hours = colonneHeure, (dfa[, : objet 'colonneDate' introuvable
write.table(df.uHMM,file="uHMMformattedData.txt",dec='.',sep="\t", quote=FALSE, row.names=FALSE)
## Error in is.data.frame(x): objet 'df.uHMM' introuvable