Bonjour à tous,
Considérons 2 tables contenant des observations par année et par classes de longueur :
- pour la 1ère table, le nombre totale d'observations y figurent,
- pour la 2ème le nombre d'observations de mauvaise qualité.
Je souhaiterais calculer un ratio entre ces 2 tables pour connaître le %age de d'observations de mauvaise qualité par année et classe de longueur.
Un extrait de la 1ère table "nbSeqTot"
Un extrait de la 2ème table "nbSeqKO"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ANNEE CLASSE_LONGUEUR NB_SEQ 1988 1 0 1989 1 5 1990 1 4 1988 2 3 1989 2 6 1990 2 0
Le problème vient du fait que ces 2 matrices ne sont pas de la même taille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ANNEE CLASSE_LONGUEUR NB_SEQ 1989 1 4 1991 1 2 1992 1 2 1989 2 3 1991 2 1 1992 2 1
Par exemple, dans la table des données de mauvaise qualité, je n'ai pas de données pour 1988.
J'ai alors créé une matrice de même dimension que la première puis j'ai procédé à un double match comme suit :
Mais les calculs de ratio se font uniquement sur la première classe de longueur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 prct = nbSeqTot prct$NB_SEQ = NULL prct$ANNEE = nbSeqTot$ANNEE prct$CLASSE_LONGUEUR = nbSeqTot$CLASSE_LONGUEUR prct$PRCT_KO = 0 for (i in (1:dim(prct)[1])){ prct$PRCT_KO[i] = (nbSeqKO$NB_SEQ[match(prct$ANNEE[i],nbSeqKO$ANNEE)][match(prct$CLASSE_LONGUEUR[i],nbSeqKO$CLASSE_LONGUEUR)]) / (nbSeqTot$NB_SEQ[match(prct$ANNEE[i],nbSeqTot$ANNEE)][match(prct$CLASSE_LONGUEUR[i],nbSeqTot$CLASSE_LONGUEUR)]) }
Je ne trouve pas la solution,
Merci d'avance pour votre aide.
Partager