Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/04/2011, 14h26   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 17
Points : 4
Points : 4
Par défaut Attribuer une même valeur aux individus

Bonjour, j'ai un petit problème :
Je travaille sur une table où 1 ligne = 1 individu. La forme est la suivante :

X Y
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 Z

Donc j'ai 3 individus qui ont la valeur 1 avec la variable X. Et chacun d'eux a soit la valeur A, B ou C avec la variable Y.
Est-il possible de faire en sorte que tous les individus qui ont la valeur 3 avec la variable X aient la valeur Z avec la variable Y ? Autrement dit, pour les individus qui ont 3 avec X, peut-on transformer les valeurs A et B en Z ?
Merci par avance.
jejeletourb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 14h59   #2
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Salut,
Qu'est ce que tu veux obtenir exactement à partir de cette table? j'ai du mal à comprendre avec tes explications
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 15h05   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 17
Points : 4
Points : 4
L'objectif est d'obtenir la table suivante :

X Y

1 A
1 B
1 C
2 A
2 B
2 C
3 Z
3 Z
3 Z
jejeletourb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 15h09   #4
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DATA TRY;
INPUT X $ Y $;
CARDS;
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 Z
;
RUN;
 
DATA TRY2;
SET TRY;
IF X='3' THEN Y='Z';
RUN;
Profites soleil quand même
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 15h19   #5
Invité de passage
 
Inscription : juillet 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 17
Points : 4
Points : 4
Merci pour cette réponse, mais le problème c'est que ma table compte plus de 2 millions de lignes. Les Y à modifier concernent plusieurs dizaines de milliers de X.
Dès lors, il est trop long d'appliquer la réponse suggérée.
Il faudrait donc un programme qui applique cela de manière automatique...
jejeletourb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 15h33   #6
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Fallait être clair, tu as une liste au préalable des individus à modifier les A et B en Z?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 15h48   #7
Invité de passage
 
Inscription : juillet 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 17
Points : 4
Points : 4
Ok :
1, 2, 3... = numéro de ménage
A, B, Z = lien de parenté

Je voudrais que pour chaque ménage (1, 2, 3...) dans lequel un individu prend la valeur Z, tous les autres individus du ménage prennent aussi la valeur Z.

Est-ce possible ?
jejeletourb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 17h33   #8
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Citation:
Je voudrais que pour chaque ménage (1, 2, 3...) dans lequel un individu prend la valeur Z :
select distinct x from try where y='Z'


Citation:
tous les autres individus du ménage prennent aussi la valeur Z.
Code :
1
2
3
4
5
6
7
8
SELECT
x,
case
when a.x=b.x then 'Z'
else a.y
end AS y
FROM try AS a
LEFT JOIN (SELECT DISTINCT x FROM try WHERE y='Z') AS b ON a.x=b.x
qui doit se simplifier d'ailleurs

ou

Code :
1
2
3
UPDATE try AS a
SET y='Z' 
WHERE a.x IN (SELECT DISTINCT x FROM try WHERE y='Z')
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 17h44   #9
Invité de passage
 
Inscription : juillet 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 17
Points : 4
Points : 4
Super, merci beaucoup !
jejeletourb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h34.


 
 
 
 
Partenaires

Hébergement Web