如何打印非数字值

时间:2019-06-07 14:19:04

标签: sas

我正在处理一项调查中的数据,该数据使研究参与者可以键入数字回答,而不是为他们提供一个下拉菜单供他们选择数字回答。结果,我的回复中包含字符(例如“ 9-12”或“ 7?”)。我想确定其中包含字符的观察结果。

谢谢!

我想到的代码使我陷入了WHERE语句中。

PROC PRINT DATA = library.survey; VAR record_id; 哪里var1 ...... 运行;

我是否可以写一些东西,实际上是在告诉SAS在var1不等于数值的情况下打印记录ID?

2 个答案:

答案 0 :(得分:1)

仅打印INPUT()无法转换为数字的非缺失值。如果它们可能卡在前导空格中,则使用LEFT()函数将其删除。另外,请注意那些值太长而不能成为有效数字的值。

where not missing(var1) 
  and (lengthn(left(var1)) <= 32 and missing(input(left(var1),?32.)))

或者使用COMMA信息而不是常规信息,带有逗号和/或美元符号的值也将被视为数字。

答案 1 :(得分:0)

其中一种方法是使用prxmatch使用正则表达式。

proc print data=survey;
where prxmatch("/\D/",compress(var1));
run;

这将匹配任何非数字字符。我们使用var1周围的压缩来删除所有空白。