Je travaille sur R dans le cadre d’un projet, cependant je bloque à un endroit, j’aurais besoin d’aide.
Mes données :
J’ai un tableau, nommé fire, qui contient :
- Year : les années
- X18, X191… : les sites étudiés
NA : pas d’enregistrement
1 : un enregistrement mais pas de feux
5 : un enregistrement et un feu
- bins : des groupes tous les 50 ans ont été formés (de 1 à 8 pour mon tableau)
Je vous en mets une partie, pour que vous ayez un aperçu de la forme :
Code : Tout sélectionner
Year X49 X5 X55 X56 X58 X6 X60 X63 X65 X66 X67 X68 X7 X70 X71 X72 X73 X76 bins
2 1576 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
3 1577 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
4 1578 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
5 1579 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
6 1580 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
16 1590 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
17 1591 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
18 1592 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
19 1593 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
20 1594 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
21 1595 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
22 1596 NA NA NA NA 5 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
23 1597 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
24 1598 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
25 1599 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
26 1600 NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA 1
Ce que j’aimerais faire :
Pour chaque site, s’il y a au moins 25 ans d’enregistrement (et donc au maximum 24 NA) par groupe d’âge (bins), on calcule le nombre de feux (correspondant au chiffre 5) divisé par le nombre d’années d’enregistrement.
Je pense que je suis sur la bonne voie pour le script mais j’ai toujours des erreurs, je vous le mets.
Le script :
Code : Tout sélectionner
r <- data.frame (matrix(nrow=8,ncol=ncol(fire)))
colnames(r) <- colnames(fire)
for (i in 1:max(fire$bins)) {
bin = fire[which(fire$bins == i),]
Sum_na <- aggregate(.~bins, data = fire, FUN=function(x) {(sum(is.na(x)))}, na.action=NULL)
r[i,] <- ifelse(Sum_na<25 & Sum_na>0, colSums(fire == 5, na.rm=T)/colSums(fire>=0,na.rm=T), NA)
}
Merci d’avance !!