我不太熟悉SAS逻辑,也不知道我的任务使用哪些步骤。基本上我想计算唯一记录数和记录数(唯一比率)之间的比率,以确定变量是离散的还是连续的。该数据集包含700多个变量和5M记录,因此使用proc freq可能会崩溃。
以下是我推荐的步骤:
重复步骤1和步骤2 N次,比如说50次。我们的最终数据集如下:
Var_name Sample_Number Unique_ratio
Var_1 1 0.58
.... ..... .....
然后,对于每个变量,计算所有N个样本的平均唯一比率。
我可以在python或R中轻松完成此操作。但将其转换为SAS非常痛苦。任何SAS专家都能给我一些建议吗?
答案 0 :(得分:3)
使用PROC FREQ中的NLEVELS统计信息。下面是一个使用SASHELP.CLASS数据集的示例,该数据集包含数字和字符变量。请注意,我在未执行的SET语句中使用NOBS选项来获取观察总数。如果您的输入是视图,那么您可能需要以其他方式计算观察数量。
proc freq nlevels data=sashelp.class ;
ods output nlevels=nlevels;
tables _all_ / noprint ;
run;
data want ;
if 0 then set sashelp.class(drop=_all_) nobs=nobs ;
set nlevels;
total=nobs;
unique_ratio = nlevels/total ;
run;
proc print; run;
如果您确实拥有大量唯一值,那么您可能只需要在数据的随机子集上运行此值。 PROC FREQ应该能够处理700个变量的10,000个观测值,即使它们都是唯一的。
答案 1 :(得分:1)
proc sql;
create table need as
select Distinct count(*) as unique_records,count(xxx)as number_of_rec
from have;`enter code here`
quit;
data need1;
set need;
ratio=(unique_records/number_of_rec)*100;
run;