我希望你能解决以下问题。
我有一个带有Char列的数据集,例如' 000000036' C'' M' M'我想将此列转换为数字列,上面的示例显示为36,C,M等。
由于
范围Tope
答案 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;