Hi!
I am new to SAS, to please forgive if this is a rather elementary question.
I have a data set that has lets say 15 observations. I am able to count them using _N_ as well as proc sql count function.
I want to declare an array of the size N where N would be equal to the number of observations...
proc sql;
select count (col1) ;
from dataset1;
quit;
array (N) $;
Thank you in advance for all you help!
To do this you have to create a macro variable and the use it in the data step:
proc sql noprint;
select Count(*) into :dim
from sashelp.class;
quit;
%put &dim;
data _null_;
/* statements.... */
array my_array(&dim) $;
/* more statements .... */
run;
Regards,
To do this you have to create a macro variable and the use it in the data step:
proc sql noprint;
select Count(*) into :dim
from sashelp.class;
quit;
%put &dim;
data _null_;
/* statements.... */
array my_array(&dim) $;
/* more statements .... */
run;
Regards,
Thank you so much for the quick reply! This did the trick!
Obviously count(*) will be the most accurate approach, but it could take some time if doing it on a huge table. Then you could try to get the number of obs from Meta data instead of actually counting it on the fly:
1)
data _null_;
call symputx('nobs', nobs);
stop;
set sashelp.class nobs=nobs;
run;
%put &nobs;
2)
proc sql;
select nobs into :nobs from dictionary.tables where libname='SASHELP' AND MEMNAME='CLASS';QUIT;
%put &nobs;
Haikuo
Thank you so much for your reply Haikuo! I am just learning SAS and I am very happy I found this board!
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.