Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal

Créer des patients sous certaines conditions

2 participants

Aller en bas

Créer des patients sous certaines conditions Empty Créer des patients sous certaines conditions

Message par zezima 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
zezima
zezima

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

Revenir en haut Aller en bas

Créer des patients sous certaines conditions Empty Re: Créer des patients sous certaines conditions

Message par niaboc 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
niaboc
niaboc

Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008

Revenir en haut Aller en bas

Créer des patients sous certaines conditions Empty Re: Créer des patients sous certaines conditions

Message par zezima 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 !
zezima
zezima

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

Revenir en haut Aller en bas

Créer des patients sous certaines conditions Empty Re: Créer des patients sous certaines conditions

Message par niaboc 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
niaboc
niaboc

Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008

Revenir en haut Aller en bas

Créer des patients sous certaines conditions Empty Re: Créer des patients sous certaines conditions

Message par zezima 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
zezima
zezima

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

Revenir en haut Aller en bas

Créer des patients sous certaines conditions Empty Re: Créer des patients sous certaines conditions

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


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