|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Bonjour,
Je suis en face d'un problème qui, j'imagine, est relativement simple quand on sait bien manipuler SAS. Je dois importer une table qui est au format .csv J'ai utilisé la PROC IMPORT mais il me fixe plein de formats que je ne connais pas (BEST12.) Il faudrait donc que je réussisse un import avec les formats que je veux. Voici donc mes questions : 1) J'ai la PROC DATA avec toutes les ATTRIB LABEL et FORMAT qui m'intéressent. Est-ce possible d'importer mon fichier .csv directement dans cette table ? (de "rajouter des lignes" dans une table vierge) 2) J'ai essayé de faire l'étape DATA suivante : Code :
Merci d'avance |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
hello,
grâce aux deux point ( : ) , t'indique à sas que la longueur tes variables peut variée. exemple; Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Alors effectivement il y a plutôt du mieux... C'est à dire qu'en mettant :
il reconnait au moins mon Id et peut l'importer (il fait entre 3 et 5 caractères). Par contre il ne commence pas à lire le nom au bon endroit (il considère que l'id fait toujours 6 caractère quand il veut lire le nom....) En plus je viens de m'apercevoir qu'il ne tient pas forcément compte des formats que je lui ai demandé :-( Ce qui fait que je n'arrive pas à imposer les variables qui m'intéressent. Pourtant j'ai vérifié sur le fichier original et par exemple mon Id ne fait pas plus de 5 de longueur, et il me le met quand même en best12, de longueur 8 (c'est quoi ce format best12 ????). Ce n'est pas possible de faire comme je pensais dans le point 1) ? (ajouter les lignes à une table déjà existante...) |
|
|
00
|
|
|
#4 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Bon ok;
déjà quand tu spécifie le séparateur ( dlm=) tu n'as pas besoin de dire à SAS d'où commence la lecture de tes variables. le BEST12, c'est un informat numérique, ( format c'est pour l'affichage etl'informat c'est pour les valeur stockée). et SAS emploie le BEST12 comme valeur numérique par defaut. En ce qui concerne ton problème avec les ( Si t'es en SASV9tu peux remplacer les deux points par exemple: Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
En enlevant le "@nombre" au début des lignes suivant le INPUT c'est bon il me prend les bonnes données aux bons endroits. Par contre il me garde du BEST12 dès que c'est un format numérique (pour les formats textes c'est bon il les prend...). Comment se séparer de ce format ?
Je vais tester une autre table pour voir comment il gère les dates... |
|
|
00
|
|
|
#6 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
si tu n'as pas spécifié l'informat SAS donnera le BEST12. par défaut.
est ce que tu peux joindre ton étape data et indiquer quelle variable te cause problème ? sinon,essaie d'adapter cette syntaxe à ton cas: Code :
|
||
|
|
00
|
|
|
#7 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Enfin pour apprendre plus , regardes formats et informat sas.
|
|
|
00
|
|
|
#8 | ||
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Merci Sam, j'ai réussi à avancer même si je ne suis pas encore au bout de mes peines
J'ai essayé avec le LENGTH que tu proposais mais finalement il s'en sort bien sans. Par contre j'ai un nouveau problème, hu hu hu... Je mets une simplification de mon étape data : Code :
NOTE: Invalid data for nais_dt in line 2 76-84. D'après ce que j'ai compris le MISSOVER fait que SAS rempli par des données manquante uniquement en fin de ligne. Mais dans mon programme, ce sont des données qui sont manquantes en milieu de ligne. Or, SAS décale toute ma ligne d'un cran vers la gauche à chaque donnée manquante... Donc ça ne ressemble plus à rien ! N'y a-t-il pas une option à mettre quelque part pour que quand il y a une donnée manquante, il ne mette rien à cette variable et continue (au lieu d'y caser la variable suivante...). Au fait j'ai bien SAS V9. |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
L'option s'appelle DSD.
|
|
|
00
|
|
|
#10 | |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Citation:
le format c'est pour l'affichage. l'informat c'est pour la lecture et surtout pour les valeurs stockées. donc toi tu dois modifier l'INFORMAT. |
|
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Yes, c'est ça ! Merci Olivier
![]() Ca marche impec. Maintenant, dernière étape : comment peut-on fixer des format personnalisés par rapport aux données importées ? (pour utiliser des proc format déjà écrits) 1) Si la donnée est stockée selon la valeur saisie : ex. "0" ou "1" pour du oui/non. 2) Si la donnée est stockée déjà selon une bibliothèque de valeur : ex. "oui" ou "non". |
|
|
00
|
|
|
#12 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
De cette façon
Code :
|
||
|
|
00
|
|
|
#13 | ||||
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Je n'ai pas compris ta réponse, Sam
Je m'en suis sorti pour mon problème 1) Pour mon problème 2), voici un peu plus de détail avec un exemple concret : J'ai le format suivant : Code :
Code :
1) Que puis-je faire pour pouvoir à nouveau fixer mes format et mes informat sur ma nouvelle variable sexe ? Dois-je faire une nouvelle étape data comme j'ai fait à mon étape 1/ mais en faisant un infile avec une table SAS ???? 2) Pourquoi la longueur minimale fixée lors de mon étape 2/ pour ma nouvelle variable numérique est 3 ? (j'ai testé en caractère on peut fixer 1 seul digit) C'est bizarre non ? |
||||
|
|
00
|
|
|
#14 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
essaies ce programme, et dis moi si c'est ce que tu recherches.
Code :
|
||
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Merci pour le lien sur la longueur des variables numérique, je m'endormirai moins bête
![]() J'ai essayé ton programme et ça ne fonctionne pas. Le "data table1" fonctionne (même si je ne sais pas à quoi sert le cards suivis des cas possibles 1) Ma nouvelle variable sexe est vide (et en BEST12...) 2) Mon ancienne variable sexinit est toujours selon le format initial. Qu'est censée faire l'instruction put ? |
|
|
00
|
|
|
#16 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Oh que si.
Au fait j'ai créé un exemple que tu dois supprimer et remplacer par ta table table1 puis j'ai essayé de t'expliquer {par le code} que la proc format ne fait que formater les donner. Je reviendrai pour les explications toute à l'heure. |
|
|
00
|
|
|
#17 | ||
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Citation:
Mais j'avoue que je suis assez largué c'est clair... Citation:
|
||
|
|
00
|
|
|
#18 | ||||||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Je t'ai promis des explications , les voici:
supporsons que t'as une table qui s'appel table1 ( moi je vais la créer, toi il est supposé que tu l'as déjà donc cette étape est à zaper). Code :
dans la proc format qui suit, toutes les valeurs commencent par une lettre majuscule. Celà dit : Féminin est différent de féminin Code :
Code :
|
||||||
|
|
00
|
|
|
#19 | ||||||
|
Invité régulier
![]() Inscription : juin 2011 Messages : 36 ![]() |
Ok, ce n'est pas un problème de casse, toutes les valeurs ont des majuscules au début donc j'en ai tenu compte dans le format. Je te met le tout : création de la table et du format pour commencer :
Code :
Ensuite je fais la seconde partie, à savoir : Code :
Code :
|
||||||
|
|
00
|
|
|
#20 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Code :
Avec une proc format? Des formats stockés quelque part ? |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com