SAS将长字符变量分成2个变量

时间:2017-01-05 04:04:37

标签: sas

我有一个凌乱的数据集,其中包含一个变量中的姓氏,名字,地址(按此顺序),而我需要这是两个不同的(名称和地址)。 我试过了

 data commainvest (keep=appln_id person_id person_name lastname firstnames newname address);
 set commainvest;
 lastname=scan(person_name,1,',') ;
 firstnames=scan(person_name,2,',') ;
 newname=catx(', ',lastname,firstnames) ;
 address=substr(person_name,1,length(person_name)-length(newname)) ;
 run;

和其他如

   address= substr(person_name,-1,length(person_name)-length(newname)) ;

   address= scan(person_name,3,length(person_name)) ;

但它总是错误地剪切地址部分或将所有信息留在最后一列。 实际上也没有必要削减姓氏和名字,但我可以找到一种方法从一开始就把它们放在一起。我的数据之间用逗号分隔。 我感谢您的帮助 谢谢 安娜

1 个答案:

答案 0 :(得分:0)

我认为由于新address变量的默认长度,您会收到截断的数据。

data commainvest (keep=appln_id person_id person_name lastname firstnames newname address);
  set commainvest;
  lastname=scan(person_name,1,',') ;
  firstnames=scan(person_name,2,',') ;
  newname=catx(', ',lastname,firstnames) ;
  length address $1000;
  address=substr(person_name,length(newname),length(person_name)-length(newname)) ;
run;

尝试上述(使用长度语句)。你的代码看起来不错!