IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Nombre d'occurences par valeur


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Nombre d'occurences par valeur
    Bonjour,

    Je suis ingénieure agronome et j'aurai besoin de votre aide pour résoudre ce problème:
    j'ai ce jeu de données:

    obs annee mere
    1 96 98321
    2 97 98321
    3 97 98321
    4 98 98321
    5 91 98341
    6 92 98341
    7 91 98361
    8 92 98361
    9 93 98361
    10 94 98361

    et je souhaite calculer le nombre d'occurence par mere, en tenant compte qu'une seule mère peut se repèter dans la même année (car un animal peut avoir pleusieurs petits). Le résultat attendu est le suivant:

    obs annee mere portee
    1 96 98321 3
    2 97 98321 3
    3 97 98321 3
    4 98 98321 3
    5 91 98341 2
    6 92 98341 2
    7 91 98361 4
    8 92 98361 4
    9 93 98361 4
    10 94 98361 4

    D'avance merci.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    Voici un code donnant le bon résultat:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    /*Création de la table incluant les données.*/
    data table_ini;
    input obs  annee mere;
    cards;
    1 96 98321
    2 97 98321
    3 97 98321
    4 98 98321
    5 91 98341
    6 92 98341
    7 91 98361
    8 92 98361
    9 93 98361
    10 94 98361
    ;
    run;
     
    /*Tri et suppression des doublons mere annee;*/
    proc sort data=table_ini out= tab_sor nodupkey; by    mere annee; run;
     
    Contage du nombre de ligne par mere
    proc sql;
    	create table tab_sum as 
    	select count(obs) as portee, mere
    	from tab_sor
    	group by mere;
    run;
     
    merge avec la table de début
    Data tab_fin;
    	merge table_ini tab_sum;
    	by mere;
    run;
    Bon courage,

    Mushy

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre aide. En appliquant votre code sur la vraie base de données ça n'a pas marché.

    Le bon code doit être de cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    proc sort data=table; by mere annee; run;
     
     
    data table;
    set table;
    by annee mere;
    if _N_1 then portee=0;
    if last.annee then portee=_N; run;

    mais je n'ai pas obtenu le résultat espéré.

    D'avance merci

  4. #4
    Membre à l'essai
    Homme Profil pro
    Statisticien
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    En suivant votre résonement, ce code devrait marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    proc sort data=table_ini out= tab_sor nodupkey; by mere annee; run;
     
    data tab_sum;
    	set tab_sor;
    	by mere;
    	retain sum;
    	if first.mere then sum=1;
    		else sum+1;
    	if last.mere;
    run;
    Il ne reste plus qu'à merger avec la table initiale.

    Bien à vous,

    Mushy

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Je vous remercie infiniment. C'est très gentil de votre part.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/11/2016, 17h10
  2. Nombres d'occurences des valeurs dans un tableau
    Par zeinab ali dans le forum Général Python
    Réponses: 5
    Dernier message: 30/08/2016, 00h33
  3. Nombre d'occurences par mois
    Par lesafir dans le forum Excel
    Réponses: 5
    Dernier message: 15/01/2013, 15h04
  4. calcul nombre d'occurences de valeurs dans un tableau
    Par solenne74 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/09/2012, 12h45
  5. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo