如何通过在SAS中将字符变量分组来创建新的分类变量

如何通过在SAS中将字符变量分组来创建新的分类变量,sas,character,grouping,categories,categorization,Sas,Character,Grouping,Categories,Categorization,我试图通过分组字符变量来创建一个新的分类变量。到目前为止,我就是这么做的,但没有观察到: data want_newvar; set have_oldvar; if (oldvar= 'A1') or ('A2'= oldvar)or ('A3'= oldvar) or ('A4'= oldvar) or ('A5'= oldvar) or ('A6'= oldvar)or ('A7'= oldvar)or ('A8'=oldvar) or ('A9'=oldvar) or ('A10'=old

我试图通过分组字符变量来创建一个新的分类变量。到目前为止,我就是这么做的,但没有观察到:

data want_newvar;
set have_oldvar;
if (oldvar= 'A1') or ('A2'= oldvar)or ('A3'= oldvar) or ('A4'= oldvar) or ('A5'= oldvar) or ('A6'= oldvar)or ('A7'= oldvar)or ('A8'=oldvar) or ('A9'=oldvar) or ('A10'=oldvar) then newvar= 'cat_name';

run;

最好使用一种格式,而不是一系列if/then/else语句。然后,您可以在其他步骤中轻松地使用它

proc format;
   value $myformatname
        'A1' = 'New Category'
        'A2' = 'New Category'
        'A3' = 'New Category'
   ;
run;

data want;
    oldcat = 'A1';
    newcat = put(oldcat, $myformatname.);
run;

你说没有观察是什么意思?您的方法是正确的,但您可能希望包含日志,以便我们可以查看SAS所说的错误。您的代码也是低效的,您应该在中使用,而不是使用多个或多个<代码>如果oldvar位于('A1','A2','A3','A4',…,'A10')中,则newvar='A1至A10'这是日志所说的:警告:数据集want\u newvar可能不完整。当该步骤停止时,有0个观察值和20个变量。警告:未替换数据集want_newvar,因为此步骤已停止。这是一个警告,而不是错误。请发布准确的日志,日志指出错误在代码中的位置,可能是错误的输入数据集,您引用的变量不存在,因为您使用的是标签而不是名称,或者其他一百个小问题,如忘记分号。如果没有日志,您的代码是正确的,这意味着您的逻辑由于某种原因是错误的,这就是我们所能说的。警告上面的日志部分是什么?是不是有点像`-386 200错误386-185:需要一个算术表达式。错误200-322:符号无法识别,将被忽略。18分;注意:SAS系统由于错误而停止处理此步骤。`如果是这样,您的代码中可能有'智能引号',而不是单引号(从Word或PDF复制和粘贴可能是智能引号的来源)。