Initialize random number seed:
&let SEED = 1234;
data _null_;
call streaminit(&SEED);
run;
Saturday, October 24, 2015
Saturday, October 17, 2015
R: Which package has this function?
Use the sos package in order to determine which package has a function you need.
library(sos)
findFn("partial residual plots")
Thursday, October 8, 2015
SAS: Drop variable if it exists
* =============================================================== ;
* M A C R O D R O P _ V A R _ I F _ E X I S T S
* =============================================================== ;
%macro drop_var_if_exists(SASFILE=,VAR=);
%* See also http://sasrunner.blogspot.com/2009/09/check-variable-exist-in-data-step-run.html;
data _null_;
dsid = open("&SASFILE");
call symput("var_exists", varnum(dsid, "&VAR"));
rc = close(dsid);
run;
%if (&var_exists eq 0) %then %do;
%put Variable &VAR does not exist in &SASFILE ;
%end;
%else %do;
proc sql noprint;
alter table &SASFILE drop &VAR;
quit;
run;
%put Variable &VAR was dropped from file &SASFILE ;
%end;
%mend drop_var_if_exists;
* =============================================================== ;
* T E S T M A C R O D R O P _ V A R _ I F _ E X I S T S
* =============================================================== ;
* Create test dataset;
data work.mactest;
set sashelp.class (obs=10);
run;
title "Before drops";
proc print data=work.mactest;
run;
title;
%drop_var_if_exists(SASFILE=work.mactest, VAR=name);
%drop_var_if_exists(SASFILE=work.mactest, VAR=xyz);
%drop_var_if_exists(SASFILE=work.mactest, VAR=age);
title "After drops";
proc print data=work.mactest;
run;
title;
* Done ;
Wednesday, October 7, 2015
SAS: Remove carriage return from string
I had a problem with a dataset with a single string field, created using datalines, and the line ended with carriage return + line feed ('0a0d'x), but code was copied to Linux where it was run, and Linux ends its lines with line feed only ('0a'x), so the field contained the carriage return. I needed to strip the carriage return from the field. I added this line within the data step that created the file.
my_field = TRANWRD(my_field,'0D'x,'');
my_field = TRANWRD(my_field,'0D'x,'');
SAS: Hash table lookup
SAS hash table lookup example taken from http://support.sas.com/documentation/cdl/en/lrcon/65287/HTML/default/viewer.htm#n1b4cbtmb049xtn1vh9x4waiioz4.htm and included in this bog so I can find it easily.
data match;
length k 8;
length s 8;
if _N_ = 1 then do;
/* load SMALL data set into the hash object */
declare hash h(dataset: "work.small");
/* define SMALL data set variable K as key and S as value */
h.defineKey('k');
h.defineData('s');
h.defineDone();
/* avoid uninitialized variable notes */
call missing(k, s);
end;
/* use the SET statement to iterate over the LARGE data set using */
/* keys in the LARGE data set to match keys in the hash object */
set large;
rc = h.find();
if (rc = 0) then output;
run;
data match;
length k 8;
length s 8;
if _N_ = 1 then do;
/* load SMALL data set into the hash object */
declare hash h(dataset: "work.small");
/* define SMALL data set variable K as key and S as value */
h.defineKey('k');
h.defineData('s');
h.defineDone();
/* avoid uninitialized variable notes */
call missing(k, s);
end;
/* use the SET statement to iterate over the LARGE data set using */
/* keys in the LARGE data set to match keys in the hash object */
set large;
rc = h.find();
if (rc = 0) then output;
run;
Subscribe to:
Posts (Atom)