Je suis écologue et je travaille actuellement sur des données de Capture-Recapture
J'ai une matrice dans laquelle on retrouve en ligne des individus capturés, en colonnes des dates de session de capture et en intersections des sites sur lesquels on a capturés les individus. Les sessions de capture se font de janvier à juin et je souhaiterait ne prendre en compte que la première capture pour chaque individu.
Voici une partie de cette matrice :
http://hpics.li/4635daa
Tout d'abord j'ai transformé tous les "0" en Na. Ensuite j'ai supprimé la première colonne qui comporte les noms des individus. La nouvelle matrice est nommée "Hist_cap_sans_ind". Puis je suis partie dans une boucle :
Code : Tout sélectionner
#Je crée une matrice dont les lignes contiennent les individus et une seule colonne contenant l'année 2010. Toutes les intersections contiennent des Na
#Cette matrice contiendra pour chaque individu le premier site de capture de l'année 2010
stock <- matrix(NA,nrow(name_ind),1)
stock <- data.frame(stock)
names(stock) <- "2010"
rownames(stock) <- (rownames(name_ind))
#Boucle permettant d'assigner le site
for (i in 1:nrow(Hist_cap_sans_ind)){
NonNA <-which(!is.na(Hist_cap_sans_ind)) # Je cherche les numéros de colonne des valeurs qui ne sont pas des NA
firstNonNA <- min(NonNA) # Valeur du plus petit numéro de colonne qui correspond à la première valeur qui n'est pas un NA
Val <- Hist_cap_sans_ind[i,firstNonNA] # Je récupère la valeur de la première intersection qui n'est pas un NA
for (z in 1:nrow(stock))
stock[z,1] <- Val # J'assigne à chaque intersection la valeur du premier site de rencontre
}
Bon, vu que je débute pas mal, les intersections de stock sont remplies de "J" ce qui correspond au premier site de capture du premier individu. Je me doute que l'ordre interne de ma boucle doit être mauvais. J'ai aussi essayé ça :
Code : Tout sélectionner
for (i in 1:nrow(Hist_cap_sans_ind)){
for (j in 1:ncol(Hist_cap_sans_ind))
NonNA <-which(!is.na(Hist_cap_sans_ind[i]))
firstNonNA <- min(NonNA)
stock[i] <-Hist_Capture[i,firstNonNA+1]
}
Mais je récupère cette erreur :
Code : Tout sélectionner
Error: Column index must be at most 14 if positive, not Inf
In addition: Warning message:
In min(NonNA) : no non-missing arguments to min; returning Inf
Quelqu'un aurait-il une idée pour me faire avancer ?