如何在SAS中读取12位数字

roh*_*oel 1 sas

我是sas的新手,正尝试读取csv文件

我正在尝试阅读的csv示例

橄榄色马修斯(Olive Mathews),119-574-8639,47 Summit Ave,22186,Portugal

Jami Gonzales,182-680-4169,81521 Chico Hwy,69148,柬埔寨

Mabel Holland,561-729-2640,87 State Hwy 160,32798,越南

爱丽丝·巴伦(Alice Barron),电话453-687-5745,621州际公路171 N,41322,伯利兹

我编写的要读取csv的SAS代码

data jul10.second;

infile '/folders/myshortcuts/myfolder/csv/data.csv' dlm=',' firstobs=2  ;
length name$20 phoneno 7 address$40 zipcode 6 country$40 ;
input name$ phoneno address $ zipcode  country$;
 run;
Run Code Online (Sandbox Code Playgroud)

在phoneno变量处给出错误(第2行15-26中的phoneno无效数据。)

但是如果我将phoneno变量转换为character变量,就不会出错-

 data jul10.second;

infile '/folders/myshortcuts/myfolder/csv/data.csv' dlm=',' firstobs=2  ;
length name$20 phoneno $12 address$40 zipcode 6 country$40 ;
input name$ phoneno $ address $ zipcode  country$;
 run;
Run Code Online (Sandbox Code Playgroud)

这是为什么 ?为什么我不能在数字变量phoneno中输入12位数字?

Chr*_*s J 5

由于连字符,因此12位数字不是数字。如果您希望将其转换为不带连字符的数字,请使用该compress()功能删除它们,并将input()其转换为数字...

realphone = input(compress(phoneno,'-'),10。);

  • 电话号码*绝不要*当作数字。您不会对它们进行数学运算,并且您进行的任何统计分析都将是面向字符的(前3个字符=区域代码,后3个字符=交换)没有数字关系(212不是“更小”)而不是312,212-213-312也不适用与大/小相关的任何关系)。邮政编码也适用相同的参数。通常,标识变量应该是字符,除非它们是顺序ID。 (2认同)