Les posteurs les plus actifs de la semaine


Créer des patients sous certaines conditions

Aller en bas

Créer des patients sous certaines conditions

Message par zezima le Mer 27 Juin 2018 - 15:07

Bonjour,

J'ai du mal à voir comment créer des lignes dans des bases de données déjà existantes.

J'ai l'exemple suivant :

Code:
data donnees_zezima;
 input id drogue $ groupe $ count;
 cards;
 1 axck A 1
 1 axck A 1
 1 catm C 1
 2 axck A 2
 2 awoj A 2
 2 catm C 1
 3 axck A 1
 3 catm C 1
 3 derp D 1
 ;
run;

J'aimerais ajouter des lignes pour chaque patient en fonction des résultats observés.
Par exemple, pour le premier patient, j'aimerais ajouter la ligne
(ID=1, drogue=_null_, groupe=voyelle, count=2)
ainsi que la ligne
(ID=1, drogue=_null_, groupe=consonne, count=1).
Et ce pour chaque patient, de manière automatique sur toute la BD.
Le but étant de créer une ou plusieurs ligne en plus pour chaque patient afin de compter le nombre de drogue avec dont le nom commence par une voyelle et le nombre de drogue commençant par une consonne.

J'avoue avoir du mal à voir comment m'y prendre.
J'ai pensé aux boucles mais je ne vois pas comment copier les infos déjà présentes pour un patient.

Si quelqu'un a une idée ou du moins une piste à explorer, je suis preneur.
Merci


Dernière édition par zezima le Mer 27 Juin 2018 - 16:01, édité 1 fois
avatar
zezima

Nombre de messages : 808
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Créer des patients sous certaines conditions

Message par niaboc le Mer 27 Juin 2018 - 15:36

Salut,

je ne suis pas certain de comprendre exactement ce que tu veux faire.
Dis-moi si ça, ça t'avance un peu :

Code:
data donnees_zezima;
 input id drogue $ groupe $ count;
 cards;
 1 axck A 1
 1 axck A 1
 1 catm C 1
 2 axck A 2
 2 awoj A 2
 2 catm C 1
 3 axck A 1
 3 catm C 1
 3 derp D 1
 ;
run;

proc sql;
 create table test as
 select * from donnees_zezima
 union
 select id, "_null_" as drogue, groupe, sum(count) as count
 from donnees_zezima
 group by 1,2,3
 ;
quit;

Niaboc
avatar
niaboc

Nombre de messages : 948
Age : 31
Localisation : Paris
Date d'inscription : 05/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Créer des patients sous certaines conditions

Message par zezima le Mer 27 Juin 2018 - 16:16

Salut Niaboc,

Merci pour ce code, c'est très proche de ce que je cherche !

En fait, je veux faire une sorte de patient résumé au dessus de toutes ses lignes et ton code m'aide beaucoup à y parvenir.

Code:
data donnees_zezima;
 input id drogue $ groupe $ count;
 cards;
 1 axck A 1
 1 axck A 1
 1 catm C 1
 2 axck A 2
 2 awoj A 2
 2 catm C 1
 3 axck A 1
 3 catm C 1
 3 derp D 1
 ;
run;

proc sql;
 create table test as
 select * from donnees_zezima
 union
 select id, "_null_" as drogue, "voyelle" as groupe, sum(count) as count
 from donnees_zezima
  where groupe="A"
 group by 1,2,3
 ;
quit;
proc sql;
 create table test as
 select * from test
 union
 select id, "_null_" as drogue, "consonne" as groupe, sum(count) as count
 from donnees_zezima
  where groupe="B" or groupe="C" or groupe="D"
 group by 1,2,3
 ;
quit;


Merci, ça m'aide vraiment beaucoup !
avatar
zezima

Nombre de messages : 808
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Créer des patients sous certaines conditions

Message par niaboc le Jeu 28 Juin 2018 - 11:56

J'avais vu avant que tu ne modifies ton post qu'effectivement le "union" dédoublonne la table... si tu ne veux pas le faire, il te suffit de mettre "union all" à la place.

Et j'ai également modifier ton code pour éviter de faire deux proc sql :

Code:
data donnees_zezima;
 input id drogue $ groupe $ count;
 cards;
 1 axck A 1
 1 axck A 1
 1 catm C 1
 2 axck A 2
 2 awoj A 2
 2 catm C 1
 3 axck A 1
 3 catm C 1
 3 derp D 1
 ;
run;

proc sql;
 create table test as
 select *
 from donnees_zezima

 union all

 select id, "_null_" as drogue, case when groupe="A" then "voyelle" else "consonne" end as groupe, sum(count) as count
 from donnees_zezima
 group by 1,2,3

 order by 1,2,3
 ;
quit;

Niaboc
avatar
niaboc

Nombre de messages : 948
Age : 31
Localisation : Paris
Date d'inscription : 05/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Créer des patients sous certaines conditions

Message par zezima le Ven 29 Juin 2018 - 15:30

Salut,

Oui en effet j'ai modifié le post car j'ai fini par trouver une petite solution.
Le code que tu proposes est plus optimal, je ne connaissais pas le "union all" (je code rarement en SQL, my bad).

En tout cas, sache que tu m'as sauvé avec le code que tu m'as envoyé, j'étais complètement bloqué jusqu'à pas d'heure au bureau ^^

Merci Smile
avatar
zezima

Nombre de messages : 808
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Créer des patients sous certaines conditions

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum