Sas 确定数据集所有变量中仅某些值的频率
我想得到一个列出所有变量的频率表,但只告诉我每个变量中出现“-2”、“-1”和“M”的次数 当前,当我运行以下代码时:Sas 确定数据集所有变量中仅某些值的频率,sas,frequency,missing-data,Sas,Frequency,Missing Data,我想得到一个列出所有变量的频率表,但只告诉我每个变量中出现“-2”、“-1”和“M”的次数 当前,当我运行以下代码时: proc freq data=mydata; tables _ALL_ /list missing; 我为每个变量和它的所有值(有时是100)得到一个表。我是否可以只获取包含我想要的三个值的表,而不包含其他所有值?可以通过多种方法实现这一点 首先,您可能希望首先对数据集执行此操作,以允许您过滤该数据集。我会使用PROC tablate,但如果您更喜欢,可以使用PROC FRE
proc freq data=mydata;
tables _ALL_
/list missing;
我为每个变量和它的所有值(有时是100)得到一个表。我是否可以只获取包含我想要的三个值的表,而不包含其他所有值?可以通过多种方法实现这一点 首先,您可能希望首先对数据集执行此操作,以允许您过滤该数据集。我会使用PROC tablate,但如果您更喜欢,可以使用PROC FREQ
*make up some data;
data mydata;
call streaminit(132);
array x[100];
do _i = 1 to 50;
do _t = 1 to dim(x);
x[_t]= floor(rand('Uniform')*9-5);
end;
output;
end;
keep x:;
run;
ods _all_ close; *close the 'visible' output types;
ods output onewayfreqs=outdata; *output the onewayfreqs (one way frequency tables) to a dataset;
proc freq data=mydata;
tables _all_/missing;
run;
ods output close; *close the dataset;
ods preferences; *open back up your default outputs;
然后对它进行过滤,一旦过滤完毕,就可以随心所欲地打印出来。请注意,在PROC FREQ输出中,每个不同的变量都有一列-这不是很有帮助。F
变量是格式化的值,然后可以使用coalesce
组合这些值。这里我假设它们都是数字变量-将f_val
定义为字符,如果有任何字符变量或应用了字符格式的变量,则使用coalescc
data has_values;
set outdata;
f_val = coalesce(of f_:);
keep table f_val frequency percent;
if f_val in (0,-1,-2);
run;
最后一行只保留0,-1,-2