我在这里有这两个数据集:
data ONE;
input ID LastName $ FirstInit $ 1.;
datalines;
509182793 Smith C
319861601 Williams J
345121778 Connor F
480863211 King L
907636280 Franklin D
729082859 Monroe T
835688938 Hall K
;
run;
data TWO;
input ID $ 11. State $ 2.;
datalines;
334-99-5246 TX
480-86-3211 MD
449-55-9407 VA
345-12-1778 GA
907-63-6280 NY
790-09-9813 WY
319-86-1601 FL
;
run;
我有两个问题:
1)如何使用COMPRESS
创建一个新的字符变量“ncv”,并将ncv的值设置为删除了连字符的字符变量ID的值?这是我的尝试:
data TWO_NUMERIC;
set TWO;
ncv=COMPRESS(TWO, "+-", "d");
run;
2)你如何使用PUT/INPUT
将ncv转换为数值来创建数字变量“newncv”
data TWO_NUMERIC;
set TWO;
put(TWO,z6.);
run;
首先从这两个问题开始,我从DATA步骤和SET语句开始:
data TWO_NUMERIC;
set TWO;
run;
我查看了SAS 9.2的帮助页面,但在他们的示例代码中使用这两个语句似乎让我很困惑。
答案 0 :(得分:0)
压缩可以多种方式使用,一种方式由上面的@Reeza描述,另一种方式使用“k”修饰符,这意味着“保持”如下所示,
data TWO_NUMERIC;
set TWO;
ncv_d=COMPRESS(ID," ", "kd"); * kd means keep-digits, your code had TWO which is a dataset name;
ncv_n=COMPRESS(ID," ", "kn"); * kd means keep-numbers;
/* Input Function is used to convert CHAR to NUM *
* the best. format applies the nearest matching format */
newncv=input(ncv_d,best.);
run;
我发现用于解释K修饰符的链接是http://www.amadeus.co.uk/sas-training/tips/1/1/11/the-enhanced-compress-function.php