我有一个凌乱的数据集,其中包含一个变量中的姓氏,名字,地址(按此顺序),而我需要这是两个不同的(名称和地址)。 我试过了
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)) ;
但它总是错误地剪切地址部分或将所有信息留在最后一列。 实际上也没有必要削减姓氏和名字,但我可以找到一种方法从一开始就把它们放在一起。我的数据之间用逗号分隔。 我感谢您的帮助 谢谢 安娜
答案 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;
尝试上述(使用长度语句)。你的代码看起来不错!