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 19/01/2012, 07h53   #1
 
Homme
Inscription : septembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 41
Points : -8
Points : -8
Par défaut Récuperer des observation aléatoire dans une table

bonjour,

Bonjour,si vous pouvé m’aidez !!
Je travail sur sas guide version 4.3 J’ai une table de 100000 ligne et 30 colonne, je veux récupérer 20 ligne aléatoirement, sachant que je peux pas utiliser la proc surveyselect car j’ai pas de licence sas stat, je cherche un programme ou autre qui peut me faire ça.
si vous pouvez m’aider svp !!
sniper75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 09h50   #2
Membre du Club
 
Homme Jérémy Noël
Consultant Support Client SAS
Inscription : mai 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Jérémy Noël
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant Support Client SAS
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 38
Points : 58
Points : 58
Bonjour,

Je te propose le programme suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DATA TEST;
       SET TA_TABLE;
	do I=1 TO 100000;
		VAR=ranuni(-3);
		output;
	end;
run;
PROC SORT DATA=TEST OUT=TEST1;
BY VAR;
RUN;
 
DATA FINAL;
	SET TEST1 (obs=20);
 run;
Cordialement
Jérémy NOEL
frajen est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/01/2012, 10h00   #3
Membre du Club
 
Homme
sas
Inscription : juillet 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : sas
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 70
Points : 54
Points : 54
je pense que le programme que tu propose selectionne les première obs. mais le problème est de selectionné autres observation que les première
m.brahim est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/01/2012, 10h28   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 150
Points : 1 772
Points : 1 772
La solution de frajen semble bonne. Il genere aleatoirement un nombre dans un nouvelle variable pour chaque observation, puis classe par ordre croissant de cette variable, et retiens les 20 premieres observations. Tu peux voir que ce ce n'est pas les 20 premieres observations de la table initiale en regardant les valeurs de I retenues.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 10h34   #5
 
Homme
Inscription : septembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 41
Points : -8
Points : -8
merci , je vais léssayé toute suite je vous tien au couran
sniper75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 10h40   #6
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 717
Points : 1 717
Attends;
avec

Code :
1
2
3
4
5
6
7
8
 
DATA TEST;
       SET TA_TABLE;
	do I=1 TO 100000;
		VAR=ranuni(-3);
		output;
	end;
run;
tu vas exploser tes calcules, voir saturé ton serveur.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/01/2012, 10h49   #7
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 717
Points : 1 717
essaies ceci:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
 
DATA test1;
SET ta_table;
var= ranuni(-3);
run;
 
 
proc sort DATA=test1 out= test2;
BY var;
run;
 
 
DATA finale  ;
SET test2 (obs=20 DROP =var );
run;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/01/2012, 11h22   #8
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Ou en SQL. L'avantage c'est que tu peux aussi le faire sous forme de requête dans SEG.
Code :
1
2
3
4
5
6
7
PROC SQL OUTOBS=20 ;
  CREATE TABLE work.ech20 (DROP=alea) AS
    SELECT *, RANUNI(1) AS alea
    FROM ta_table
    ORDER BY alea
  ;
QUIT ;
Surtout éviter d'exécuter le code
Code :
1
2
3
4
5
6
7
DATA TEST;
       SET TA_TABLE;
	do I=1 TO 100000;
		VAR=ranuni(-3);
		output;
	end;
run;
de Jérémy qui va te multiplier la taille de ta table par 100 000 !
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2012, 11h51   #9
Membre du Club
 
Homme Jérémy Noël
Consultant Support Client SAS
Inscription : mai 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Jérémy Noël
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant Support Client SAS
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 38
Points : 58
Points : 58
Il est vrai que maintenant que je regarde mon programme, la boucle est parfaitement inutile et même dangereux!!! Je souhaitais en effet faire ce que _sam_ proposait!!!
Je m'en excuse (faire vite n'est jamais une bonne idée)!!!
frajen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h59   #10
 
Homme
Inscription : septembre 2011
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 41
Points : -8
Points : -8
Par défaut merci pour tout le monde

un grand merci pour tout le monde (frajen ,s_a_m,olivier.decourt,Manoutz ,m.brahim j'ai reussi a le faire avec :

Code :
1
2
3
4
5
6
7
PROC SQL OUTOBS=20 ;
  CREATE TABLE work.ech20 (DROP=alea) AS
    SELECT *, RANUNI(1) AS alea
    FROM ta_table
    ORDER BY alea
  ;
QUIT ;
sa marche trés bien.
sniper75 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 02h25.


 
 
 
 
Partenaires

Hébergement Web