在SAS

时间:2015-11-23 21:26:24

标签: sas

我在这里有这两个数据集:

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的帮助页面,但在他们的示例代码中使用这两个语句似乎让我很困惑。

1 个答案:

答案 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