我正在处理一项调查中的数据,该数据使研究参与者可以键入数字回答,而不是为他们提供一个下拉菜单供他们选择数字回答。结果,我的回复中包含字符(例如“ 9-12”或“ 7?”)。我想确定其中包含字符的观察结果。
谢谢!
我想到的代码使我陷入了WHERE语句中。
PROC PRINT DATA = library.survey; VAR record_id; 哪里var1 ...... 运行;
我是否可以写一些东西,实际上是在告诉SAS在var1不等于数值的情况下打印记录ID?
答案 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
周围的压缩来删除所有空白。