Как открыть .sas7bdat в SAS и экспортировать в Excel? - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в SAS. У меня есть файл с расширением .sas7bdat, который содержит ежедневные цены акций и процентные изменения. У него почти 2 миллиона позиций. Я знаю, что могу просто дважды щелкнуть файл и открыть его с помощью SAS 9.4. Но я ищу коды, которые я могу набрать в редакторе и открыть этот файл. Пожалуйста, помогите мне.

После открытия этого файла мне нужно экспортировать его в Excel. Поскольку в нем 2 миллиона данных, я не могу экспортировать все в одной вкладке Excel. Итак, что я хочу сделать, это случайным образом выбрать (скажем, 10000 или 20000) данных и экспортировать только эти случайно выбранные данные, чтобы преуспеть.

Мой файл .sas7bdat находится на рабочем столе.

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Вы можете использовать surveyselect и указать количество записей, которое вы хотите в вашем подмножестве использовать proc export.

В моем примере ниже я создаю таблицу из 10 строк и хочу только 5 строк в подмножестве. просто измените значение в моей макропеременной с 5 на 100000

Код:

data have;
input value;
datalines;
1
2
3
4
5
6
7
8
9
10
;
run;
%let subset=5;
proc surveyselect data=have
   method=srs n=&subset. out=want;
run;

Выход:

value=1 
value=2 
value=5 
value=6 
value=10 

Экспорт:

proc export data=sashelp.class 
   outfile='c:\myfiles\want.csv'
   dbms=csv
   replace;
run;

Вы также можете фильтровать данные, которые вы экспортируете, фиктивный пример ниже:

proc export data=want (where=(value > 100 or location='X'))
   outfile='c:\myfiles\want.csv'
   dbms=csv
   replace;
run;
0 голосов
/ 03 мая 2018

Сначала создайте библиотеку, чтобы указать местоположение в файловой системе, где находится набор данных. Это указатель (в терминах C) на каталог.

libname myData "<path to folder>";

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

data temp;
set myData.<Data Set Name>;
__rnd = ranuni(1);
run;

proc sort data=temp ;
by __rnd;
run;

data toOutput;
set temp(obs=10000 drop=__rnd);
run;

Последний шаг данных считывает только первые 10000 записей, которые вы рандомизировали выше.

Затем вы можете использовать PROC EXPORT для экспорта значений.

proc export data=toOutput outfile="c:\temp\output.xlsx" dbms=xlsx replace;
sheet="MyData";
run;

Самое замечательное в том, что вы можете создавать другие листы в файле с дополнительным экспортом.

proc export data=toOutput outfile="c:\temp\output.xlsx" dbms=xlsx replace;
sheet="MyData2";
run;

Это позволит вам создать несколько образцов или даже экспортировать все данные на несколько листов.

0 голосов
/ 03 мая 2018

Вы можете использовать ODS. Это будет проще, но сгенерируйте файл, который при первом открытии выдаст предупреждение

libname rd_data "<Your Path to dataset>"

data temp;
  set rd_data.<dataset name>;
  rnd = ranuni(123456);
run;

proc sort data = temp out = temp(drop=rnd);
  by rnd;
run;
**** Remember this is .xls file, not .xlsx
ods html file = <xls file path - full path>;
proc print data = temp(obs=1000);
run;
ods html close;

В качестве альтернативы вы можете использовать DDE (Динамический обмен данными)

...