IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Import csv avec des noms de variables commençant par un nombre


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut Import csv avec des noms de variables commençant par un nombre
    Bonjour,

    Je dois importer un fichier csv, et j'ai un problème avec les noms de variables, sans doute parce qu'ils commencent avec un chiffre ou un caractère interdit.
    Avez-vous une idée pour gérer ce problème (autre que de changer manuellement le nom des variables avec un éditeur de texte, parce que je dois recommencer cette opération sur de nombreux fichiers) ?
    D'avance merci !

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    options validvarname=ANY;
    proc import datafile = "X:\Health information\Health status report\REALISATION\Analysis\MORTALITY\OriginData\EU15_dth_2000_2013.csv"
    out=EU15_dth_2000_2013 replace dbms=csv;
    GETNAMES=YES;
    run;
    Voici à quoi ressemblent les données
    Country,Year,Sex,Format,Sum of selected ages,All ages,< 1 year,1 year,2 years,3 years,4 years,5 - 9,10 - 14,15 - 19,20 - 24,25 - 29,30 - 34,35 - 39,40 - 44,45 - 49,50 - 54,55 - 59,60 - 64,65 - 69,70 - 74,75 - 79,80 - 84,85 - 89,90 - 95,95 +,Unknown
    Austria,2014,M,00,8353100,4176550,41187,41677,41584,41862,41202,206739,212907,238277,278303,285578,290548,272842,307254,357387,342721,280448,227242,199333,199834,123310,84581,45605,14363,1766,0
    Austria,2014,F,00,8734764,4367382,38641,38932,38985,39564,39133,197226,202182,225991,267614,279457,287165,272124,311632,352091,340200,289394,243847,223415,237317,160411,131703,95820,47022,7516,0
    Austria,2013,M,00,8277386,4138693,40420,41205,41501,40895,40697,206668,213674,243629,275223,280303,283327,272125,319065,358384,332435,269216,227365,196227,200794,112706,84642,43200,13292,1700,0
    Austria,2013,F,00,8677074,4338537,37696,38628,39228,38811,38534,197205,203051,231041,265485,276074,280401,274297,321904,352853,330426,279104,244311,220682,237732,149675,133426,97085,43491,7397,0
    Et voici le résultat (les noms des variables après 'All ages' ont toutes changé:
    Country Year Sex Format Sum_of_selected_ages All_ages __1_year __year __years VAR10 VAR11 ____9 _0___14 _5___19 _0___24 _5___29 _0___34 _5___39 _0___44 _5___49 _0___54 _5___59 _0___64 _5___69 _0___74 _5___79 _0___84 _5___89 _0___95 _5__ Unknown
    Austria 2014 M 0 8353100 4176550 41187 41677 41584 41862 41202 206739 212907 238277 278303 285578 290548 272842 307254 357387 342721 280448 227242 199333 199834 123310 84581 45605 14363 1766 0
    Austria 2014 F 0 8734764 4367382 38641 38932 38985 39564 39133 197226 202182 225991 267614 279457 287165 272124 311632 352091 340200 289394 243847 223415 237317 160411 131703 95820 47022 7516 0
    Austria 2013 M 0 8277386 4138693 40420 41205 41501 40895 40697 206668 213674 243629 275223 280303 283327 272125 319065 358384 332435 269216 227365 196227 200794 112706 84642 43200 13292 1700 0
    Austria 2013 F 0 8677074 4338537 37696 38628 39228 38811 38534 197205 203051 231041 265485 276074 280401 274297 321904 352853 330426 279104 244311 220682 237732 149675 133426 97085 43491 7397 0
    Austria 2012 M 0 8218862 4109431 40066 41184 40614 40460 40763 207118 215731 248739 270764 277338 275709 275513 331894 358257 320858 259444 228939 191806 194202 111043 84012 41200 11945 1832 0


  2. #2
    Membre régulier
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2017
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Novembre 2017
    Messages : 63
    Points : 82
    Points
    82
    Par défaut
    Je ne vois d'autre solution que d'utilisation un datastep avec une une instruction INFILE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    FILENAME monfichier "/fichier_a_importer.csv";
     
    DATA madata;
       INFILE monfichier
       FIRSTOBS = 2
       MISSOVER
       DLM = ";"
       DSD;
     
       INFORMAT 
          ma_variable_1 BEST32.;
       FORMAT;
     
     
       INPUT
           ma_variable_1
           ma_variable_2
           ma_variable_3
           ;
     
    run;

    L'instruction INPUT vous permet d'attribuer les noms de variables désirés.
    Avec cette syntaxe, il ne vous reste plus qu'à changer le filename pour chaque nouveau fichier.

    De manière générale, je ne peux que vous recommender de toujours travailler avec des noms de variables respectant ces principes :
    - aucun espace
    - aucun caractère spécial
    - commençant toujours par une lettre ou un underscore
    - les séparations entre les termes sont réalisés à l'aide d'underscore (éviter à tout prix les tirets)

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup !
    en fait les noms de variables proviennent du fichier que j'ai reçu (en format csv);
    je me demandais s'il y avait une façon de les récupérer sans faire d'"infile"; mais je vois que non, donc je vais suivre votre conseil.
    bonne journée !

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2017
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Novembre 2017
    Messages : 63
    Points : 82
    Points
    82
    Par défaut
    Il est malgré tout possible d'utiliser des noms de variables non-conformes. Il faut alors utiliser la syntaxe :

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    data toto;
      set toto;
      where "ma variable"n > 1;
    run;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/09/2014, 02h04
  2. Fichiers CSV avec des noms différents
    Par tifaz dans le forum Informatica
    Réponses: 2
    Dernier message: 10/01/2013, 16h57
  3. Créer des noms de variables dynamiquement avec JSP
    Par Zakapatul dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/02/2007, 15h24
  4. [CSV] importation CSV avec des guillemets
    Par trash_board dans le forum Langage
    Réponses: 3
    Dernier message: 12/09/2006, 15h08
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo