数字列中的SAS字符和数字类型

时间:2016-11-04 08:53:30

标签: sas

我希望你能解决以下问题。

我有一个带有Char列的数据集,例如' 000000036' C'' M' M'我想将此列转换为数字列,上面的示例显示为36,C,M等。

由于

范围Tope

2 个答案:

答案 0 :(得分:0)

SAS数值可以有特殊的缺失值,在代码中引用为.A .B .C等,但在打印时它们显示为AB C.如果您的变量只有一个字符长的alpha值,则可能是最简单的方法来维护角色。您可以使用MISSING语句告诉SAS哪些字符代表特殊缺失值。

data have;
  input cvar $3.;
  cards;
036
C
M
;

missing C M;

data want;
  set have;
  nvar=input(cvar,3.);
  put cvar= nvar=;
run;

missing; *restore default;

如果您的数据字符串较长,则需要使用不同的转换方法(可能是自定义信息),但我仍然会考虑使用特殊的缺失值,假设您的字符值不超过27个源数据。

答案 1 :(得分:0)

数字列只能存储数字或缺失值。可以使用格式将数字显示为字符,但这与此无关。

@Quentin是正确的,你可以使用特殊的缺失值来显示你的字母,虽然他指出,这些只限于单个字母。 SAS通常将缺失的数值存储为句点(。),但您也可以使用字母A-Z和下划线来表示特殊缺失值,这些值实际上存储为.A,.B,.C,----> ._。

如果您在数据步骤中使用missing语句包含所有字母,则它会自动分配并显示相关字母作为特殊缺失值。如果任何字符值超过一个字母,则它将无法转换或显示该值。

data have;
input char_col $15.;
datalines;
000000036
C
M
;
run;

data want;
set have;
missing a b c d e f g h i j k l m n o p q r s t u v w x y z;
num_col=input(char_col,best12.);
run;