SAS中统计列内匹配字符值数量的技术问题求助
解决SAS中PROC FREQ统计多类别取值的问题
嗨,作为SAS新手遇到这种语法小问题太正常啦,咱们马上来搞定它~
问题根源:WHERE子句语法错误
你写的where hair_color="brown" "black" "blonde" "red";不符合SAS的语法规则,SAS没办法识别这种直接罗列字符串的多值匹配方式,这也是代码只能在特定条件下运行的原因。
修正后的正确代码
要匹配多个取值,咱们得用IN操作符把所有目标值放在括号里,每个值之间用逗号分隔。完整代码如下:
proc freq data=fake_dataset; tables hair_color; where hair_color IN ("brown", "black", "blonde", "red"); run;
额外小提示
- 如果你的
fake_dataset里hair_color变量只有这四个有效取值(没有缺失值或其他无效值),其实可以直接省略WHERE子句,运行下面的代码就能得到所有类别的统计结果:proc freq data=fake_dataset; tables hair_color; run; - 要是你想把统计结果保存成一个SAS数据集方便后续分析,可以加上
OUT选项:
这样会生成一个名为proc freq data=fake_dataset; tables hair_color / out=hair_color_stats; where hair_color IN ("brown", "black", "blonde", "red"); run;hair_color_stats的数据集,包含颜色类别、频数、百分比等信息。
内容的提问来源于stack exchange,提问作者nicole14768
相关产品推荐
相关产品推荐

