1

我的数据集看起来像这样

可变图像

我希望它看起来像这样:

 Subject Code  site          subj
 0156 00062    156            62 
 0156 00062    156            62 
 0047 00032    47             32
 0034 00066    34             66
 0032 00029    32             29 
 .
 .  
  • 我的代码:
if "Subject Code"n ^="" then site=input(scan("Subject Code"n,1,' '),z9.);       
   put site=;       
if "Subject Code"n ^="" thensubj=input(strip(substr((scan("Subject Code"n,-1)),1,4)),$4.);      
put subj=;

我得到的输出:

site=15600062     
subj=1560

如您所见,SAS 取出前导 0 值和空格“”,因此很难拆分。

4

2 回答 2

0
data have;
input subjectcode $&10.;
datalines;
0156 00062
0156 00062
0047 00032
0034 00066
0032 00029
;

data want;
   set have;
   site=prxchange('s/0*([1-9]+) 0*([1-9]+)/$1/', -1, subjectcode);
   subj=prxchange('s/0*([1-9]+) 0*([1-9]+)/$2/', -1, subjectcode);
run;
于 2019-12-22T09:01:46.610 回答
0

你可能过于复杂了。尝试:

length site subj 8;   * declare the variables as numeric;

site = input (scan ('Subject Code'n,1), 8.);
subj = input (scan ('Subject Code'n,2), 8.);

z 如果您希望在查看器或 proc 输出中呈现时以前导零显示值,则变量将需要格式。

format site z4.;
format subj z5.;
于 2019-12-21T17:25:41.713 回答