In the following data step, table 1 and table 2 have the same data structure. Setting multiple tables in the data step will stack the tables. First, the where statement will make the program more efficient by applying the conditions to all the datasets in the Set statement. If statements create subsets and apply action(s) to specific subsets.
Data temp;
set table1 table2;
where var1 = ‘condition1’ and var2 = ‘condition2’ and var3 NE ‘condition3’;
if var4 = a and var5 = ‘3’ then do; output; end;
if var4 = b and var5 IN (‘1′,’2’) then do; output;end;
run;
Month: May 2016
SAS: Export to Excel with Label Option and 9.3/9.4 Difference
It is common to export SAS data tables or outputs to Excel spreadsheets. The default Excel output will only contain field names in the first row of the spreadsheet. The ‘label’ option will allow the SAS label names to be the column names on the first row of the exported table.
Method 1:
PROC EXPORT DATA=table1.
OUTFILE= “C:\Work\SAS\table1.xlsx”
label DBMS=EXCEL REPLACE;
SHEET=”table1″;
NEWFILE=YES;
RUN;
method 2:
libname excelout “X:\Work\excelfile.xlsx”;
data excelout.sheet1 (dblabel=yes) ;
set tablename;
run;
libname excelout clear;
9.4 SAS Difference
PROC EXPORT
- Experience slowness in running PROC IMPORT and PROC EXPORT
- Find reference: https://blogs.sas.com/content/sasdummy/2012/05/01/64-bit-gotchas/;
- Change: DBMS= EXCEL to DBMS=EXCELCS
PROC EXPORT DATA= SASHELP.CARS OUTFILE= "C:\Excel\car.xlsx" DBMS=EXCELCS REPLACE; SHEET="car"; RUN;
- Bug: a blank tab (_SAS_empty_) with A1 = “_empty_(CHECK_OTHER_SHEET) was generated in the xlsx file.
- Change DBMS=EXCEL to DBMS=XLSX and the blank tab will disappear.
PROC EXPORT DATA= SASHELP.CARS OUTFILE= "C:\Excel\car.xlsx" DBMS=XLSX REPLACE; SHEET="car"; RUN;
Alternative 1: LIBNAME method
- Add xlsx in the libname statement;
- dblabel = option not work for the xlsx engine.
Libname exl xlsx "C:\Excel\car.xlsx"; data exl.cars; set SASHELP.CARS ; run; libname exl clear;
Alternative 2: ODS EXCEL method
- ods excel; ods excel close;
- file =” “;
- ods excel options (sheet_name = ” “);
- proc print noobs label data=;run;
ods excel file= "C:\Excel\&fac._research.xlsx"; ods excel options (sheet_name = "&fac."); proc print noobs label data =research; where faculty = "&fac."; run; ods excel close;
SAS: Identfy and Remove Duplicate Records
Step 1: Check duplicate records by one field or a combination of fields.
proc freq data=temp noprint;
table var1 /out =dupl (keep =var1 count where = (count >1));
run;
proc freq data=temp noprint;
table var1*var2 /out =dupl (keep =var1 var2 count where = (count >1));
run;
Examine the output to see what circumstances can cause duplicate records.
Step 2: Remove duplicate records.
proc sort data=temp NODUPKEY;
by var1 ;
run;
proc sort data=temp NODUPKEY;
by var1 var2 ;
run;
Alternative method to output unique records and duplicated records in two separate datasets.
proc sort data =temp out=temp1;
by var1 var2;
run;
data unique dup;
set temp1;
by var1 var2;
if first.var2 and last.var2 then output unique;
else output dup;
run;