SASsy is an ECL Bundle to help SAS users transition to ECL. It provides a simplified version of SAS functions (e.g. PROC) and tries to match SAS format for outputs.
To install, use the ecl-bundle
command line interface.
ecl-bundle install https://github.com/lpezet/SASsy.git
Once installed, you merely IMPORT the library or one of its submodules, then call any methods as appropriate.
For example:
IMPORT SASsy.PROC;
ds := DATASET([ {693.0, 16.0, 67.0, 76.0},
{570.0, 15.0, 92.0, 79.0},
{546.0, 17.0, 97.0, 68.0},
{571.0, 20.0, 90.0, 87.0},
{478.0, 18.0, 89.0, 87.0},
{737.0, 21.0, 29.0, 96.0},
{536.0, 21.0, 71.0, 100.0},
{523.0, 19.0, 69.0, 71.0},
{655.0, 20.0, 65.0, 100.0},
{523.0, 19.0, 74.0, 87.0},
{521.0, 19.0, 74.0, 94.0},
{709.0, 17.0, 18.0, 96.0},
{505.0, 19.0, 75.0, 94.0},
{762.0, 20.0, 18.0, 100.0},
{722.0, 20.0, 11.0, 95.0},
{603.0, 19.0, 71.0, 88.0},
{657.0, 19.0, 67.0, 100.0},
{705.0, 17.0, 46.0, 96.0},
{754.0, 20.0, 25.0, 100.0},
{490.0, 23.0, 71.0, 65.0},
{698.0, 19.0, 44.0, 100.0}
],{REAL8 perf, REAL8 class_size, REAL8 perc_free_meals, REAL8 full_creds});
PROC.CONTENTS( ds );
- SELECT( pOutDS, pInDS, pFields='' )
Example:
PROC.SELECT( mealsFull, ds, 'perc_free_meals,full_creds');
OUTPUT( mealsFull, NAMED('MealsAndFull'));
- PRINT( pInDS, pObs=100 )
Example:
PROC.PRINT( ds, 10 );
- CONTENTS( pInDS )
Example:
PROC.CONTENTS( ds );
- MEANS( pOutDS, pInDS, pFields = '' )
Example:
PROC.MEANS( means, ds, 'year');
OUTPUT( means, NAMED('Means'));
- FREQ( pOutDS, pInDS, pFields = '' )
Example:
PROC.FREQ( freq, ds, 'class_size');
OUTPUT( freq, NAMED('Freq') );
- UNIVARIATE( pInDS, pFields = '' )
Example:
PROC.UNIVARIATE( ds, 'perc_free_meals');
- SASsy.Utils.reg_report_on_all( pOLS, pRegressionModel, pFields )
This provide similar outputs from SAS REG
function. You will need to use HPCC Systems Machine Learning ECL Bundle (ML_Core
).
Example:
IMPORT SASsy;
IMPORT ML_Core;
IMPORT LinearRegression;
pIndVars := 'class_size,perc_free_meals,full_creds';
pDepVars := 'perf';
exlayout := RECORD( RECORDOF(ds) )
UNSIGNED __id__;
END;
exdata := PROJECT( ds, TRANSFORM(exlayout, SELF.__id__ := COUNTER; SELF := LEFT));
indvars := pIndVars + ',__id__';
depvars := pDepVars + ',__id__';
inddata := TABLE( exdata, { #EXPAND(REGEXREPLACE('\\,', indvars, ';') + ';') } );
depdata := TABLE( exdata, { #EXPAND(REGEXREPLACE('\\,', depvars, ';') + ';') } );
ML_Core.ToField( inddata, inddataNF, __id__ );
ML_Core.ToField( depdata, depdataNF, __id__ );
ols := LinearRegression.OLS( inddataNF, depdataNF );
model := ols.GetModel;
SASsy.Utils.reg_report_on_all( ols, model, inddataNF );