erreur dans la matrice

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

pinson laura
Messages : 66
Enregistré le : 30 Juil 2015, 11:35

erreur dans la matrice

Messagepar pinson laura » 17 Mai 2016, 07:59

Bonjour bonjour à vous,

Après un bon mois d'absence, je reviens^^

Voila, j'ai plus au moins réussi ma prog mais bloque dans ma matrice.

Je vous remets l'histoire de ce que je souhaite faire :
Je pars toujours de ma matrice. J'ai donc un tableau ou mes colonnes représentent mes heures et les lignes correspondent à mes mailles géographiques. Mes valeurs correspondent à mes températures.

Je souhaite mettre un indice par température. J'ai crée mes indices en fonction des seuils de températures et de la durée. J'ai donc créé une autre matrice avec en colonne la durée (1 jour, 2 jour, 3jour, etc), en lignes, les seuils de températures (jour et nuit, en Kelvin) et mes valeurs correspondent donc à mes indices. Donc si je résume, il il fait moins de 296.15K, le premier jour, mon indice sera de 1.2, si le deuxième jour, ma température est inférieure à 300.15K, alors mon indice sera de 3.2K...

Ca, c'est fait!

Le souci que j'ai c'est que mon prog lit les données sur 10j.
Je donne un exemple, les deux premiers jours l'indice est égal à 0, parfait car c'est en dessous de 292, sauf que le troisième jour, l'indice est en dessous de 294, donc il devrait avoir un indice de 1 mais il a un indice de 3..car je pense qu'il prend direct l'indice du troisième jour alors qu'il ne devrait pas!! Avez vous une idée de comment je peut régler ce pb?


###
# Déclaration matrice d'indice
###
indice29415=c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
indice29615=c("1,2", "2,4", "3,6", "4,8", "6", "7,2", "8,4", "9,6", "10,8", "12")
indice29815=c("1,4", "2,8", "4,2", "5,6", "7", "8,4", "9,8", "11,2", "12,6", "14")
indice30015=c("1,6", "3,2", "4,8", "6,4", "8", "9,6", "11,2", "12,8", "14,4", "16")
indice30215=c("1,8", "3,6", "5,4", "7,2", "9", "10,8", "12,6", "14,4", "16,2", "18")
indice30415=c("2", "4", "6", "8", "10", "12", "14", "16", "18", "20")
indice30615=c("2,2", "4,4", "6,6", "8,8", "11", "13,2", "15,4", "17,6", "19,8", "22")
indice30815=c("2,4", "4,8", "7,2", "9,6", "12", "14,4", "16,8", "19,2", "21,6", "24")
indice31015=c("2,6", "5,2", "7,8", "10,4", "13", "15,6", "18,2", "20,8", "23,4", "26")
indice31215=c("2,8", "5,6", "8,4", "11,2", "14", "16,8", "19,6", "22,4", "25,2", "28")
indice31415=c("3", "6", "9", "12", "15", "18", "21", "24", "27", "30")

###
# Fin matrice d'indice
###

data = read.csv("source.csv", header=FALSE, sep=";", dec=",", encoding="UTF-8")

nrow = 400
ncol = 30

newDataFrame = data

for (i in 1:nrow) {

refJour = 1

for (j in 1:ncol) {

if (refJour>=10) {
refJour = 1
}

# On lit la température
tmp = round(data[i,j])

# Si c'est pas la première valeur de la ligne
# On récupére la température de la veille
# Sinon la température de la veille = 0
if (j>1) {
previous = round(data[i, j-1])
} else {
previous = 0
}

# On récupére la matrice d'indice en fonction de la température lue
if (tmp == 294) { mattmp = indice29415 }
else if (tmp <= 294) { mattmp = indice29415 }
else if (tmp <= 296) { mattmp = indice29615 }
else if (tmp <= 298) { mattmp = indice29815 }
else if (tmp <= 300) { mattmp = indice30015 }
else if (tmp <= 302) { mattmp = indice30215 }
else if (tmp <= 304) { mattmp = indice30415 }
else if (tmp <= 306) { mattmp = indice30615 }
else if (tmp <= 308) { mattmp = indice30815 }
else if (tmp <= 310) { mattmp = indice31015 }
else if (tmp <= 312) { mattmp = indice31215 }
else if (tmp <= 314) { mattmp = indice31415 }
else { mattmp = indice31415 }

# Si inférieur à 292, on enleve 1 à l'indice de la veille
if (tmp < 292) {
# Si on est pas sur le premier jour
if (j>1) {
truc = newDataFrame[i, j-1]
truc = as.numeric(truc)-1
} else {
truc = 0
}

if (truc < 0) {
truc = 0
}

newDataFrame[i, j] = truc
} else {
newDataFrame[i, j] = mattmp[refJour]
}

refJour=refJour + 1

}
}

write.table(newDataFrame, file="new.csv", sep=";", row.names=FALSE, col.names=FALSE, append=TRUE)

Retourner vers « Questions en cours »

Qui est en ligne

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