SAS語言的作用,SAS程式語言知多少

2021-03-19 18:21:27 字數 5589 閱讀 7942

1樓:第零

sas是一種專用的資料處理、統計計算語言,但是它也包含一般的高階語言程式設計能力並擴充了許多數學、統計等方面的函式。

sas語言的程式設計計算能力主要由sas資料步提供。data語句以關鍵字data 開頭,後面給出一個資料集名,例如:

data out1;

則在本資料步要生成的資料集,其名字為out1。我們也可以省略資料集名,這時sas自動生成一個臨時資料集名。也可以使用特殊名字_null_ ,表示本資料步不生成資料集。

一賦值語句

在sas中用賦值語句計算一個值並存放到變數中。

格式為變數名 = 表示式;

例如:avg = (math + chinese)/2;

isfem = (***='女');

y=sin(x)**2;

newv = .;

其中第一個賦值語句用一個公式計算平均分數。第二個生成一個取值為0或1的變數,性別為女時為1,否則為0。第三個使用了正弦函式和乘方運算。第四個給變數賦了缺失值。

二輸出語句

sas資料步的輸出一般是資料集,用賦值語句計算的結果會自動寫入資料集。sas也提供了一個put語句用於立即列印輸出結果。

put語句的語法:

put 輸出項表

輸出項表中只能是變數或字串,項間用空格隔開。如:

data;

x=0.5;

y=sin(x);

put 'sine function value of ' x 'is ' y;

run;

結果將在執行記錄視窗顯示一行

sine function value of 0.5 is 0.4794255386

put說明

⒈在put語句中,若在變數名後加「=」,則指定輸出項可以顯示帶有變數名的輸出結果。

比如把上程式中的put語句改為

put x= y=;

則結果在log視窗顯示為

x=0.5 y=0.4794255386

⒉指定變數輸出項的具體列位置及小數位數

絕對位置格式:

變數 起始列-結束列.小數位數

比如,put x 10-20 .6 y 30-40 .6;

指定把x數值顯示在第10-20列,保留6位小數,把

y數值顯示在第30-40列,保留6位小數。

在指定的列位置內,數值型資料靠右對齊,字元型

資料靠左對齊。變數為整數值或者字元型則不指定

小數位數。

相對位置格式:

變數 寬度.小數位數(用於數值型)

變數 $寬度.(用於字元型)

如:put x 20.8 y 20.8; 使x佔用第1-20列,8位小數,右對齊;y佔用第21-40列,8位小數,右對齊。

而put name $10.;使name佔用10列。

輸出佔位不滿指定寬度時,數值型資料向右對齊,字元型資料向左對齊。

⒊如果希望put語句的輸出不產生換行,使下一個put的結果可以顯示在同一行,只要在put 語句結尾處加一個@符。

put語句的輸出結果預設情況下被送到執行記錄視窗。若在put語句之前用file語句可以改變put語句的輸出目的地。如,在put語句之前用file print;可以把put語句的輸出轉向到輸出視窗。

在file語句中指定一個包含檔名的字串可以把put語句的輸出轉向到此檔案中。比如file 'tmp.out';輸出檔案把後續的put語句輸出轉向到當前工作目錄下的檔案「tmp.

out」中,生成tmp.out 。注意當前工作目錄在sas狀態列的右方顯示,雙擊可以更改。

檔名也可以指定全路徑,比如「c:\sas\tmp.out」。

三分支結構

⒈if...then...else 結構

⒉select結構

1. if...then...else 結構

格式為:

if 條件 then 語句;

else 語句;

例: data temp1

input x @@;

if x>0 then put x '是正數';

else put x '是負數';

cards;

1 2 -3 4 -5

;run;

有時我們在條件成立時需要進行的操作無法用一個語句完成,這時可以使用sas提供的複合語句功能。例:

data;

input x@@; /*不分行符@@的使用:每讀入一天記錄後,資料指標保持原位不換行,

繼續讀下一條記錄*/

if x>0 then do;

y=2*x;

put 'f(' x ')=' y;

end;

else put 'data error!';

cards;

1 2 -3 4 -5

;run;

如果當條件不成立時,不進行什麼操作,可以不使用else及其後面的語句。

2.select結構

格式一:

select (選擇表示式);

when(值列表) 語句;

when(值列表) 語句;

……otherwise 語句;

end;

功能及流程:

執行select結構時,先計算出選擇表示式和值列表中的所有值,然後把選擇表示式值由前向後與值列表中的值相比,發現相等值則執行對應的語句,然後退出select結構(不再檢視後面的值列表)。如果選擇表示式的值不等於任何值列表中的值則執行otherwise對應的語句,這種情況下沒有otherwise語句會出錯。

例:data ;

input month $ @@;

put month @;

select(month);

when('feb', 'mar', 'apr') put '春天';

when('may', 'jun', 'jul') put '夏天';

otherwise put '秋天或冬天';

end;

cards;

mar jun oct

;run;

格式二:

select;

when(條件) 語句;

when(條件) 語句;

……otherwise 語句;

end;

這種select語句沒有選擇表示式,而是在每

一個when語句指定一個條件(邏輯表示式),

執行第一個滿足條件的when後的語句。如果所

有條件都不滿足則執行otherwise後的語句。

例:data;

input age @@;

put age @;

select;

when(age<=12) put '少年';

when(age<35) put '青年';

otherwise put '中老年';

end;

cards;

10 30 50

;run;

四迴圈結構

⒈計數do迴圈

⒉當型迴圈

⒊直到型迴圈

⒈計數do迴圈

計數do迴圈的格式:

do 計數變數 = 起始值 to 結束值 by 步長;

迴圈體語句……

end;

這種結構與basic中計數迴圈很類似,功能也相當,只是在sas中是以關鍵字do開頭(不是for),另外步長用by引導(不是step),而結構以end結束(而不是next)。

其功能與流程:

程式先把計數變數賦值為起始值,如果此值小於等於結束值則執行迴圈體語句,然後把計數變數加上步長,再判斷它是否小於等於結束值,如果是則繼續執行迴圈體,直到計數變數的值大於結束值為止。上述結構中「by 步長」可以省略,這時步長為1。如果步長取負值,則繼續迴圈的條件是計數變數大於等於結束值。

計數do迴圈舉例

data;

sum=0;

do i = 1 to 10 ;

sum +i;

/*此處sum+i等價於sum=sum+i*/

end;

put sum=;

run;

在迴圈體中可以用leave語句跳出迴圈(功能與c語言的break語句相當),如:

data;

n=13;

flag=1;

do i = 2 to n/2 ;

if mod(n,i)=0 then do;

flag=0;

leave;

end;

end;

if flag=1 then

put n 是素數;

else

put n 不是素數;

run;

⒉當型迴圈

當型迴圈的格式:

do while(迴圈繼續條件);

迴圈體語句……

end;

程式先判斷迴圈繼續條件是否成立,成立時執行迴圈體語句,再判斷迴圈繼續條件,如此重複,直到迴圈繼續條件不再成立。

data;

x=243;

y=63;

z=mod(x,y);

do while (z ^= 0);

x=y;

y=z;

z= mod(x,y);

end;

put y;

run;

⒊直到型迴圈

直到型迴圈的格式:

do until (迴圈退出條件);

迴圈體語句……

end;

程式先判斷迴圈退出條件是否成立,成立則結束迴圈,否則繼續。例:

data;

n=0;

do until (n>=5);

n+1;

put n=;

end;

run;

sas程式語言知多少

2樓:匿名使用者

base sas模組的:

· data step(

資料步,在sas幫助文件中稱為sas 語言)

· ds2(data step 2,最新一代的程式語言)

· macro(巨集)

· sql和fedsql(雖然只是兩個過程步,不能稱之為一門語言,但是作為資料處理尤其是資料庫處理的程式語言其作用相當重要。)

· fcmp(function ***piler,用於使用者自定義函式和子例程的編譯和管理)

· gtl(graphic template language,圖形模板語言)

· metadata language(後設資料管理語言)

sas/af模組的:

· scl(sas ***ponent language sas元件語言,現在已經很少有人用了。)

sas/or模組的:

· optmodel(optimization model,優化模型程式語言)

sas/iml模組的:

· iml(矩陣程式語言)

sas/iml studio模組的:

· imlplus(iml 語言的擴充套件,主要用於生成圖形、呼叫sas過程步和非sas程式)

jmp模組的:

· jsl(jmp script language,jmp 指令碼語言)

c語言程式設計,c語言程式設計

首先void是返回值型別,就是空值,也就是說這個函式裡面不能有返回值。delay這個是函式名,沒什麼好說。至於uchar 應該是引數型別,但是我還沒有見過這樣的引數型別 可能是我見識少了 我只見過 nchar,varchar nvarchar 之類的。而t就是引數啦 main printf 總運費 ...

用於硬體程式設計的有哪些程式語言,硬體程式語言有哪些?

我就是這個方向的。c語言,matlab,verilog,vhdl用的多。偶爾需要c 或者labview做上位機和硬體通訊。主要彙編,c語言用得了多了 就因為c語言的指標這個東西太牛x了 矯翼凌翔鵷。赤縣揚雷聲,硬體程式語言有哪些?早一點是vhdl,現在是verilog,c語言,matlab,veri...

c語言網路程式設計,C語言網路程式設計

路由器本身不具備資料儲存能力。通常,路由器的功能是埠 在路由器建立埠對映 公網某埠和內網某臺電腦的某埠關聯 後,外網電腦才能和內網某電腦進行通訊,通訊過程中路由器一直負責資料的中轉。但內網電腦一旦關閉連線,路由器是無法單獨收取並儲存資訊的,它會直接把斷連事件通知給連線的另一端 外網某電腦 例如你的情...