2011-12-19 1 views
1

У меня есть следующие файлы csv, и мне нужно их прочитать в наборах данных SAS. Кроме того, мне нужно назначить имена столбцов. Кроме того, мне нужно, чтобы столбец был числовым, но некоторые столбцы имеют как числовые, так и знаковые значения.Чтение нескольких файлов csv в наборах данных SAS

папку аа: abc1.csv, abc2.csv, abc3.csv, ...... бб папка: abc1.csv, abc2.csv, abc3.csv, ...... папка куб.см : abc1.csv, abc2.csv, abc3.csv, ......

+0

У вас есть п количество папок, содержащих п число файлов CSV? Вы в Unix, Windows, Mainframe? –

+0

Да, у меня есть n папок, содержащих n количество файлов csv. Я нахожусь в Windows. Я новичок в SAS и очень обеспокоен этой проблемой. Большое спасибо! – user1106772

+0

Что вы подразумеваете под «нужно, чтобы столбец был числовым»? Значения символов не могут быть сохранены в виде чисел. – itzy

ответ

1

Это не полный ответ, но он поможет вам начать. Вам нужно будет добавить внешний цикл, чтобы пройти через разные каталоги, из которых вы хотите получить файлы.

/*List the files in a directory for use in a data step. This is written for Windows. Other operating systems will be slightly different. */ 
filename fnames pipe 'dir c:\temp\* /b'; 

/* Create a data set with one observation for each file name */ 
data fnames; 
    infile fnames pad missover; 
    input @1 filename $255.; 
    n=_n_; 
run; 

/* Store the number of files in a macro variable "num" */ 
proc sql noprint; select count(filename) into :num; quit; 

/* Create a macro to iterate over the filenames, read them in, and append to a data set. */ 
%macro doit; 
    %do i=1 %to # 

     proc sql noprint; 
      select filename into :filename from fnames where n=&i; 
     quit; 

     data ds; 
      infile &filename; 
      input ...list of variable names...; 
      ...other statements...; 
     run; 

     proc append data=ds base=final; run; 
    %end; 
%mend; 

%doit; 
+0

Спасибо, очень! Но я все еще пытаюсь понять. Действительно свежий для SAS. – user1106772

2

Вы могли бы сделать это следующим образом.

  1. Храните все свои файлы в одной папке.
  2. Назовите все из них в файле csv только с одним столбцом.
  3. Импортируйте файл (csv) с именами файлов в SAS.
  4. Создайте макрос, чтобы сохранить свое имя с предложением «в».

    proc sql; 
    select name_list into :name separated by '*' from work.name; 
    %let count2 = &sqlobs; 
    quit; 
    
  5. Создайте макрос, как показано ниже.

    %macro yy; 
    %do i = 1 %to &count2; 
    %let j = %scan(&name,&i,*); 
    proc import out = &j datafile="folderwhereallcsvfilesarekept\&j..csv" 
    dbms=csv replace; 
    getnames = yes; 
    run; 
    %end; 
    %mend; 
    

 Смежные вопросы

  • Нет связанных вопросов^_^