SAS计算两个数据集的比例
SAS Calculate the proportion of two datasets
我有两个数据集,假设一个有100个观察,另一个有50个。所以,这两个数据集的比例是100/50=2。有谁知道如何在SAS中计算这个数字并将其保存以供以后编程?提前致谢!
获取数据集obs的方式有很多种,例如:proc SQL insert into, proc contents output, using SASHELP tables, using the end= statement in a datastep.
不过我喜欢用 SAS 宏变量(使用 %let 和 %sysfunc)来做,因为它让你像个坏蛋。你想看起来像个坏蛋吗?
像这样的东西(我没有在我面前打开 SAS 来测试所以语法可能有点错误):
%macro getobs(mydata);
%let data_open=%sysfunc(OPEN(&mydata.,IN));
%let NOBS_&mydata.=%sysfunc(ATTRN(&data_open,NLOBS));
%let data_close=%sysfunc(CLOSE(&data_open));
%mend;
那么您应该能够使用 NOBS_&mydata 变量来获取所需的比例值(尽管您可能需要在宏中使用 %global NOBS_&mydata.
语句……我不确定)。类似于:
%let proportion = &NOBS_data1 / &NOBS_data2;
试一试,看看你有什么想法。
我有两个数据集,假设一个有100个观察,另一个有50个。所以,这两个数据集的比例是100/50=2。有谁知道如何在SAS中计算这个数字并将其保存以供以后编程?提前致谢!
获取数据集obs的方式有很多种,例如:proc SQL insert into, proc contents output, using SASHELP tables, using the end= statement in a datastep.
不过我喜欢用 SAS 宏变量(使用 %let 和 %sysfunc)来做,因为它让你像个坏蛋。你想看起来像个坏蛋吗? 像这样的东西(我没有在我面前打开 SAS 来测试所以语法可能有点错误):
%macro getobs(mydata);
%let data_open=%sysfunc(OPEN(&mydata.,IN));
%let NOBS_&mydata.=%sysfunc(ATTRN(&data_open,NLOBS));
%let data_close=%sysfunc(CLOSE(&data_open));
%mend;
那么您应该能够使用 NOBS_&mydata 变量来获取所需的比例值(尽管您可能需要在宏中使用 %global NOBS_&mydata.
语句……我不确定)。类似于:
%let proportion = &NOBS_data1 / &NOBS_data2;
试一试,看看你有什么想法。