我有一种看起来应该很容易修复的情况。但是,我正在努力寻找一个优雅的解决方案。我收到了已经格式化的数据。类似于下面的玩具数据集。PROC FREQ中的数值或PROC中的格式值PRINT
proc format;
value x1_f 1 = "Yes"
0 = "No";
value x2_f 1 = "Yes"
2 = "No";
run;
data ds;
input x1 x2;
datalines;
1 2
1 1
0 1
;
data ds;
set ds;
format x1 x1_f.
x2 x2_f.;
run;
现在,作为我的数据管理过程的一部分,我使用x1和x2创建了一个2x2表。假设我正在检查我的数据,并期望x1和x2始终同意。
proc freq data = ds;
tables x1*x2;
run;
当我看到报告时,我注意到x1和x2并不总是同意。所以,我想打印出不同意观察的观察结果,看看我是否能够弄清楚可能发生了什么。因为这是一个玩具的例子,所以没有其他变量可以看,但希望你能明白。
proc print data = ds;
where x1 = "Yes" & x2 = "No";
run;
SAS使我有以下错误:
ERROR: WHERE clause operator requires compatible variables
好吧,我想我需要给SAS的数值,而不是格式化的值。但是,当我查看之前的PROC FREQ报告时,它只显示格式化的值。所以,我运行另一个PROC FREQ。
proc freq data = ds;
tables x1*x2;
format x1 x2;
run;
现在我可以看到哪个变量使用0和1,哪个变量使用1和2。
proc print data = ds;
where x1 = 0 & x2 = 1;
run;
最后,我得到了我在找的东西。这看起来真的很笨重和不雅。有人可以告诉我如何在我的频率报告中同时查看我的数值和格式化值,或者如何在proc打印中使用格式化值?