I am trying to modify a set of code so it can produce varnames with 32 characters, currently its only giving me 20 characters...any help would be greatly appreciated...
proc iml; reset noprint; use params;
read all var{variable} into varnames;
read all var _all_ into b;
use Cov1; read all var _num_ into x1;
use Cov2; read all var _num_ into x2;
use CovI; read all var _num_ into x3;
cov = x1 + x2 - x3; /* Calculate covariance matrix */
dfe = b[1,3]; stdb = sqrt(vecdiag(cov)); beta = b[,1]; z = beta/stdb; prob = 1-probf(z#z,1,dfe); /* Calc stats */
print,"Parameter estimates",,varnames[format=$32.] beta[format=8.4] stdb[format=8.4] z[format=8.4] prob[format=8.4];
conc = beta || stdb || z || prob;
cname = {"estimates" "stderror" "zstat" "pvalue"};
create &outdataset from conc [ colname=cname ];
append from conc;
conc = varnames;
cname = {"varnames"};
create names from conc [ colname=cname ];
append from conc;
data &outdataset; merge names &outdataset; run;
quit;
Run
proc contents data=params; run;
to view the length of the 'variable' variable. In your IML program, the statement
read all var{variable} into varnames;
means that nleng(varnames) be equal to the length of the 'variable' variable in the PARAMS data set.
If that is the problem, you can use the LENGTH statement in a DATA set to make the variable wider.
If you don't have control over the input, you can always resize the CONC variable by using the PUTC function to apply the $32 format, like this:
conc = putc(varnames, "$32.");
Run
proc contents data=params; run;
to view the length of the 'variable' variable. In your IML program, the statement
read all var{variable} into varnames;
means that nleng(varnames) be equal to the length of the 'variable' variable in the PARAMS data set.
If that is the problem, you can use the LENGTH statement in a DATA set to make the variable wider.
If you don't have control over the input, you can always resize the CONC variable by using the PUTC function to apply the $32 format, like this:
conc = putc(varnames, "$32.");
Thanks so much Rick!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.