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 20/06/2011, 14h24   #1
Candidat au titre de Membre du Club
 
Femme
etudiante stagiaire en recherche clinique
Inscription : avril 2011
Messages : 74
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : etudiante stagiaire en recherche clinique
Secteur : Santé

Informations forums :
Inscription : avril 2011
Messages : 74
Points : 14
Points : 14
Par défaut importation de données excel

Bonjour à tous

Je rencontre un petit problème lors de l'importation d'un tableau excel. Dans ma table à importer j'ai une variable numérique mais qui comporte parfois des codes (du type : ND ou ?). Lorsque j'importe ma table sur sas, la variable est donc sous format caractère, pour la transformer en numérique j'utilise un 'input'. Le problème est que j'ai plusieurs variables avec ce problème et, pour aller plus vite, je voudrais savoir s'il existe une option dans la proc import qui permettrais de demander à sas de lire ces variables comme des variables numériques.

Merci pour votre aide
mathis86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 14h37   #2
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
Ben non justement, il doit la lire en $ et c'est ensuite à toi de faire une étape DATA pour les transformer toutes.
Tu peux utiliser un ARRAY pour aller plus vite.
__________________
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 20/06/2011, 14h49   #3
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
C'est plus simple avec les array que Stépahne t'a suggéré!
Tu peux t'inspirer de cet exemple, c'est plus facile de convertir après import
que d'utiliser un infile.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DATA test;
input var1$ var2 $var3$ var4$;
cards;
96 78 54 89
63 36 41 36
;
run;
 
DATA test;
SET test;
array var_initial[*] var1-var4;
array var[*] varr1-varr4;
do i=1 TO dim(var);
var[i]=input(var_initial[i],best.);
end;
run;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 15h16   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 703
Points : 1 703
Hello,
pour éviter d'avoir pleins de messages d'erreurs dans la LOG, suite aux valeurs non numériques; j'ai rajouté ??;

Exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
DATA test;
array vic(*)$20. var1-var9;
 
INFILE cards;input vic(*) : $20. @@;
cards;
15121re 154545121  4748545 78454842 4141 4784 5484 887 or134
;
 
run;
 
DATA test1 (DROP= i var1-var9);
SET test;
 
array vic (9)$ var1-var9 ;
array Nvar(*) Nva1-Nva9;	
 
do i=1 TO dim(Nvar);
Nvar(i)=input(vic(i),??best.);end;
run;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 15h34   #5
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
Une question subsidaire, pourquoi utiliser BEST. ?
__________________
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 20/06/2011, 16h24   #6
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 703
Points : 1 703
Citation:
Envoyé par datametric Voir le message
Une question subsidaire, pourquoi utiliser BEST. ?
Je l'utilise à la guise de Brice.

Plus sérieusement, comme je ne connais pas sa langueur de ligne de variables. Le BEST. Laissera à SAS le choix de la meilleure longueur.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h26   #7
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


Au fait, merci Mathis pour ton aide!!!
MEGAMIND2 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 22h30.


 
 
 
 
Partenaires

Hébergement Web