1. 程式人生 > >設定SAS變數的輸入和輸出格式

設定SAS變數的輸入和輸出格式

一、日期變數與財務資料變數

  1. 不設定輸出格式
data bank2;
input @1 no $3.
@4 time mmddyy10.
@14 gender $1.
@15 money 7.;
datalines;
00110/21/1955M   1145
00211/18/2001F  18722
00305/07/1944M 123.45
00401/01/1960F -12345
;
title'bank of new information';
/*沒有對日期的輸出格式進行設定,就會顯示具體離1960年1月1日的天數*/
proc print data=bank2 noobs;
run;

  1. 設定輸出格式
data bank2;
input @1 no $3.
@4 time mmddyy10.
@14 gender $1.
@15 money 7.;
datalines;
00110/21/1955M   1145
00211/18/2001F  18722
00305/07/1944M 123.45
00401/01/1960F -12345
;
title'bank of new information';
/*修改日期的輸出格式,財務資料加上美元符號或者逗號*/
proc print data=bank2 noobs;
/*mmddyy10.也可以改成date9.*/
format time mmddyy10.
money dollar11.2;
run;

  1. 輸出結果

不設定輸出格式 在這裡插入圖片描述

設定輸出格式

在這裡插入圖片描述

二、列輸入方式、新增label、使用者自定義的format

  1. 問題的來源

來自經管之家的提問:怎樣批量輸入有格式的變數? 連結:新增連結描述 2. 無label和format

data suvey;
input subj:$3. 
gender: $1. 
age:2. 
salary:6.
(ques1-ques5)($1. +1);
cards;
001 M 23 28000 1 2 1 2 3
002 F 55 76123 4 5 2 1 1
003 M 38 36500 2 2 2 2 1
004 F 67 128000 5 3 2 2 4
;
run;
proc print data=suvey noobs;
format salary dollar11.2;
run;

  1. 新增label和自定義format
data suvey;
input subj:$3. 
gender: $1. 
age:2. 
salary:6.
(ques1-ques5)($1. +1);
label subj='工號'
gender='性別'
age='年齡'
salary='薪水'
Ques1='The governor is doing a good job?'
Ques2='The property tax should be lowered'
Ques3='Guns should be banned'
Ques4='Expand the Green Acre program'
Ques5='The school needs to be expanded';
cards;
001 M 23 28000 1 2 1 2 3
002 F 55 76123 4 5 2 1 1
003 M 38 36500 2 2 2 2 1
004 F 67 128000 5 3 2 2 4
;
run;
proc format;
value $ gender 
'M'='Male'
'F'='Female'
' '='Not entered';
value age 
low-29='Less than 30'
30-50='30 to 50'
51-high='51+';
value $likert '1'='Strongly disagree'
'2'='Disagree'
'3'='No opinion'
'4'='Agree'
'5'='Strongly agree';
proc print data=suvey ;
*若想要輸出變數的標籤資訊,可以寫成括號裡面的資訊(proc print data=suvey label;);
id subj;
var gender age salary Ques1-Ques5;
format Gender                   $gender.
         Age                   age.
        Ques1-Ques5            $likert.
         Salary               dollar11.2;
run;

  1. 執行結果

無label和format的結果

在這裡插入圖片描述

新增label和自定義format(不輸出label)

在這裡插入圖片描述 新增label和自定義format(輸出label)

在這裡插入圖片描述

解讀程式碼中一些語句

第一個:符號@ 符號@稱為列指標(Column Pointer),@4就是告訴SAS,指到第4列。

第二個:使用者自定義format的格式 PROC FORMAT; VALUE format-name Data-value-1 = ‘Label 1’ Data-value-2 = ‘Label 2’; VALUE format-name-2 Data-value-3 = ‘Label 3’ Data-value-4 = ‘Label 4’; …; RUN; 備註:來自新增連結描述

感謝和參考

書籍《Learning_SAS_by_Example,_A_Programmers_Guide》

其他

如有冒犯您的資訊,請聯絡作者qq:359678664刪除文章。