Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Créer des patients sous certaines conditions
2 participants
Page 1 sur 1
Créer des patients sous certaines conditions
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 :
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
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- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer des patients sous certaines conditions
Salut,
je ne suis pas certain de comprendre exactement ce que tu veux faire.
Dis-moi si ça, ça t'avance un peu :
Niaboc
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- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Créer des patients sous certaines conditions
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.
Merci, ça m'aide vraiment beaucoup !
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- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Créer des patients sous certaines conditions
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 :
Niaboc
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- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Créer des patients sous certaines conditions
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
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
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|