使用字母标识处理组时SAS ANOVA变量缺失错误的解决求助
问题解决:SAS分类变量用字母标识时的报错处理
报错原因
你遇到的ERROR: One or more variables are missing or freq or weight is zero on every observation,根源是没有明确指定分类变量的字符类型。SAS默认会把input语句里未标注类型的变量识别为数值型,当你输入A/B/C/D/E这类字母时,SAS无法将其解析为数值,导致treat变量全部缺失,进而触发报错。
无需修改数据的解决方法
只需要在DATA步的input语句中,给treat变量加上$符号,明确它是字符型变量即可。修改后的完整代码如下:
Data ANOVA3; input treat $ val; /* 新增$,指定treat为字符型 */ cards; C 96 B 69 D 65 E 34 A 89 C 90 D 74 E 49 B 58 D 41 C 60 A 90 A 106 B 95 E 41 D 54 C 57 A 99 D 35 E 18 C 62 B 78 B 96 E 24 A 71 ; run; title "problem3"; proc glm; class treat; model val= treat; lsmeans treat / stderr pdiff; run;
性别变量(M/F)的同类问题处理
同样逻辑,只要在input语句中给性别变量添加$声明字符型,比如input gender $ age;,就能避免类似报错,不用把M/F改成数字。
SAS完全支持字母作为分类变量,核心是要正确声明变量类型,无需修改原始数据内容。
内容的提问来源于stack exchange,提问作者Kimber
相关产品推荐
相关产品推荐

