Re: [問題] 請問sas處理帶符號資料該如何轉換成數字
※ 引述《u504053 (Rebecca)》之銘言:
: 請問sas處理帶符號資料該如何轉換成數字
: 謝謝
: 帶符號資料說明 :
: 儲存: 以該變數之實際長度儲存,在儲存值末位,來區別其職之正負
: 讀取: 若該變數實際長度為15bytes,以COBOL讀取上述資料時,格式為PIC S9 (15). ;
: 以SAS讀取時,格式為ZD15.
: 下表為儲存值末位正負值對照表
: 儲存末位值 A B C D E F G H I { J K L M N O P Q R }
: 對照值 1 2 3 4 5 6 7 8 9 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0
: 如儲存值為00000000000428L,讀取時其值為 -4283
我能提供的方法就是土法煉鋼,一步一步將資料弄成是我要的格式
/*先讀進資料*/
DATA aa;
INPUT a1 1-14 a2 $15;
CARDS;
00000000001231M
00000000003456O
00000000000428L
;
RUN;
/*然後在弄成自己要的格式*/
DATA bb; SET aa;
IF a2='A' | a2='J' THEN a3=1; IF a2='B' | a2='K' THEN a3=2; IF a2='C' | a2='L' THEN a3=3;
IF a2='D' | a2='M' THEN a3=4; IF a2='E' | a2='N' THEN a3=5; IF a2='F' | a2='O' THEN a3=6;
IF a2='G' | a2='P' THEN a3=7; IF a2='H' | a2='Q' THEN a3=8; IF a2='I' | a2='R' THEN a3=9;
IF a2='(' | a2=')' THEN a3=0;
IF a2='A' | a2='B' | a2='C' | a2='D' | a2='E' | a2='F' | a2='G' | a2='H' | a2='I' | a2='('
THEN a4=1;
ELSE a4=-1;
num=compress(a1||a3);
goal=num*a4;
RUN;
以上 如有誤請指正
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.76.175.139
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):