工作--SAS BASE 編程基礎語句總結
一,函數篇
字元型函數:
1,compress函數 消除加保留
語法compress(V1,」AB」, 」I」)I是指刪除V1中的AB不分AB大小寫
Compress(V1,」 」)指去掉V1中的缺失值
Compress(V2,」AB」, 「K」)K是指保留AB
Eg:可以直接寫compress(Z);不寫空格代表默認消除空格;
2,substr函數 截取字元串
語法 substr(string,position,length)從第position開始截取截取length位數
EG: y=substr(v1,1,4);假如V1是20170414 那麼Y為2017;
3,put函數 日期型(日期本質是數值型變數SAS默認是1960年1月1日距離指定日期的天數)字元型 變數轉化成字元型變數
語法 Put(V1,format.)
Eg1:數值型轉化為字元型
x=」01 jan 2007」D;
y=put(x,yymmdd.10);z=compress(Y,」-」);
Run;
Eg2:字元型轉化為字元型
Y=put(「011」,$a.);
($a.是自定義format)
4,tranward替代
語法:tranward(sours e, target, replacement);在變數V1中,用replacement替代target
EG3:y=tranward(V1,」ab」,」x」);
*tranward與compress在消除方面的不同點為:tranward可以先替代再消除固定AB,compress消除的對象為AB字母。Eg:compress(tranward(v1,」ab」,」x」),」」);就只消除AB
Compress(v1,」ab」);就會消除ABA*
數值型函數:
1,input函數把字元型變數轉化成數值型變數
語法 y=input(sourse,informat)
Eg:x1=』20071001』;x2=』021001』;
Y1=input(x1,yymmdd10.);Y2=input(x2,yymmdd8.)
Run;
總結:1,字元型轉化為日期型的有兩種方法
input語句; EG1:Y1=input(x1,yymmdd10.);
mdy語句; (substr()*1,substr()*1,subtr()*1) EG:
2,日期數值型轉化為字元型用put;EG:Y=put(「011」,$a.);假如是20120606這樣的字元型格式y=mdy(substr(date,5,2)*1,substr(date,7,2)*1,substr(date,1,4)*1);
3,數值型轉化為日期型用mdy(取整求餘數) EG:如果是20120606這樣8位的那麼y=mdy(mod(int(date/100),100),mod(date,100),int(date/10000));
2,Intck函數 找出間隔月,日,年
語法intck(interval, from,to)
Eg:y=intck(『qtr』,x1,x2); 注意x1,x2都為日期型函數;返回的是X1日期到X2日期之間季度數。
3,Intnx函數 返回指定時間間隔的日期型
語法intnx(interval,startfrom, increment,<aligment>)
間隔時間年月日,開始日期,間隔步長+-,日期控制
日期控制的語法:b:返回間隔時常的起始值,m指返回間隔時長的中間值,E指返回間隔時常的末尾值。S:返回間隔步長的同值
Eg:取間隔一年後的同日
Y=intnk(『year』,x1,1,』sameday』);
取間隔一個月後的末日
Y=intnk(『month』,x1,1,』E』);
SEL語言函數
1,open函數
語法 open(SAS-set-name); 成功=1,失敗=0
2,close函數
語法 close(SAS-SET-NAME);成功=0,失敗=1
3,fetchobs函數 獲取一條觀測值,如果成功=0,失敗非0
語法 y=fetchobs(sas-set-id,10);
4,varnum函數 獲取某個變數的位置
語法 y=varnum(sas-set-id,name);
5,getvarc函數getvarn函數 返回某一字元型變數的值/數值型變數
語法 y=getvarc(sas-set-idvar-num)
待更......
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二,常用DATA PROC篇
SAS 語句分為DATA 步驟加上PROC步驟。
DATA 步驟是將特定規則的數據放入新建的數據集中,proc步驟是用於對已有的數據集進行數據分析。
在此總結常用proc步。
1,proc freq 求分類型變數的頻數分析
例子:數據集
SAS代碼對train這個數據集裡面的gender性別求頻數,它會輸出
2,proc means 求數值型變數分布分析:統計量均值,中位數,標準差等。例子,數據集
SAS語句means 可以對指定變數profit求指定統計量,這裡求了均值,分位數,標準差,最大最小可以求出來。還有標準誤,方差等都可以求。var 是統計量的對象,class是分組對象
結果
3,proc summary 求數值型變數分組匯總值
數據集:同上
SAS語句:
結果是將對Product_line產品線這個變數分組後對應的每組最大最小平均以及總和利潤輸出到新數據集中。
與means 不同,summary 可以輸出到數據集,再進行加工,means主要直接產生報表。4,proc contents 求整個數據集的數據概況,數量,觀測,變數類型,長度等
數據集:同上
SAS語句:
結果:數據集:同上
SAS 代碼:
noobs,不列印1234序列號,sum 加總利潤,where篩選,contains 只要Product_group包含『Kids』這個字元串,注意區分大小寫。結果:6,proc sort 對數據集按照某個欄位按照順序或者降序方式排序。數據集:
SAS代碼:
第一個對日期默認升序排序,第二個按照 產品線分組,對日期descending降序排序,第三組對產品線nodupkey去重。
7,proc format 自定義格式,運用格式數據集:
SAS代碼:
proc format 自定義格式,value 賦值,後面跟要把那些觀測定義格式;data 步驟用於應用格式。結果8,proc univariate 輸出指定變數的距,統計觀測量及分位數,一次性輸出數據集:同6
SAS代碼:
結果:
9,proc select 隨機抽樣分層抽樣
推薦閱讀:
※從NASA到Intel,編程貓學員在矽谷收穫了哪些技能?
※對於UiPath的初步了解
※Monad, 紙巾包 和 托爾的龍角
※從網易雲歌單說到貪心演算法
※買西瓜的高級玩法,用好你的智能手機