Считывание данных с использованием PUT в SAS - PullRequest
0 голосов
/ 21 июня 2019

Обычно я использую PROC EXPORT для считывания данных из SAS в файл csv или .dat.

Мне дали показание, которое использует оператор PUT, но я не могу найти пример того, как использовать это, который работает для меня.

В данный момент у меня есть:

DATA TC_LEVEL_JUNE01;
FILE "C:\Users\JUNE01.csv"
    LRECL = 7353;
    PUT
    @5 VAR1 $20.
    @25 VAR2 $20.
    @45 VAR3 2.
;
RUN;

Но это просто изменяет данные на набор данных из 1 строки.

1 Ответ

2 голосов
/ 21 июня 2019

Чтобы просто создать выходной файл csv в операционной системе, используйте DATA _NULL_.Шаг данных не имеет оператора SET, поэтому нет строк данных для обработки.Поскольку у вас есть DATA TC_LEVEL_JUNE01, он создаст однорядный набор выходных данных и выходной файл.Не уверен, почему LRECL=7353, когда операторы put создадут строку из 46 символов.

Это ближе к тому, что вам нужно для вывода с фиксированным столбцом (запятые могут не понадобиться для последующей обработки?):

DATA _NULL_;  /* do not create an output data set */
  SET TC_LEVEL_JUNE01;  /* read record from this data set */
  FILE "C:\Users\JUNE01.csv" LRECL = 7353;  /* place output from PUT in this file */

  PUT /* 'Export' three columns of data */
    @5 VAR1 $20.
    @25 VAR2 $20.
    @45 VAR3 2.
  ; 
RUN;

Для действительных PUT заполненных csv также потребуется разделение запятыми и двойные кавычки.

Например:

data _null_;
  set sashelp.class;
  file 'c:\temp\class.csv' dlmstr=',' dsd;
  put name sex age ;
run;

From FILE помогает (мои слова выделены)

DSD (данные, чувствительные к разделителю)

указывает, что значения данных, которые содержат встроенные разделители, такие как вкладки илизапятые, заключенные в кавычки.Опция DSD позволяет записывать значения данных, которые содержат встроенные разделители, в вывод LIST.Эта опция игнорируется для других типов вывода (например, отформатировано , столбец и имя).Любые двойные кавычки, включенные в значение данных, повторяются.Когда значение переменной содержит разделитель, а DSD используется в операторе FILE, значение переменной заключается в двойные кавычки при генерировании выходных данных.

...