1.missing(),如果變數有缺失值,則返回真。如
data test_miss;
set learn.blood;
if missing(gender) then missgender + 1;
if missing(wbc) then misswbc + 1;
if missing(rbc) then misswbc + 1;
if chol lt 200 and not missing(chol) then
level = 'low ';
else if chol ge 200 then level = 'high';
run;
當變數名形如x1-x5,可以呼叫missing(of x1-x5).此種寫法也可用於諸如sum等函式。
2.ranuni.返回0到1的隨機數。若以0作為種子,sas將以系統時間作為種子產生隨機數。
3.lag返回前乙個觀測值的函式。看下面的**
data look_back;
input time temperature;
prev_temp = lag(temperature);
two_back = lag2(temperature);
datalines;
1 60
2 62
3 65
4 70
;得到結果為
listing of look_back
prev_
obs time temperature temp two_back
1 1 60 . .
2 2 62 60 .
3 3 65 62 60
4 4 70 65 62
lag返回前乙個觀測值,lag2將返回往前數兩個的觀測值,不是指兩個觀測值。呵呵。lag的一般作用為計算兩個變數的差值。將上例略微修改一下,計算兩天的溫度差。
data diff;
input time temperature;
diff_temp = temperature – lag(temperature);
datalines;
1 60
2 62
3 65
4 70
;當然更直接的用法是用diff函式。
data diff;
input time temperature;
diff_temp = dif(temperature);
datalines;
1 60
2 62
3 65
4 70
;4.compbl:將字串中兩個或兩個以上的空格刪除只剩乙個空格(即 compress blank)。compress刪除空格或指定的字元。
假設有乙個名為**號碼的變數,由於其**的不同,導致格式多樣。
phone
(908)232-4856
210.343.4757
(516) 343 - 9293
9342342345
現在想去掉左右括號,點號和-號。
data phone;
length phonenumber $ 10;
set learn.phone;
phonenumber = compress(phone,' ()-.');
drop phone;
run;
compress的引數稱為修飾語(modifier),各個修飾語的意思如下
d 刪除數字
a 刪除大小寫字元
i 忽略大小寫
k 保留字串
s 刪除空格,製表符等
p 刪除標點符號
例如函式 作用 返回值
compress(string,,'a') 刪除所有字串 123
compress(string,,'kd') 刪除除數字外的其它字元 123
compress(string,'wxyz','i') 忽略大小寫刪除 wxyz 123
compress("a?b c99",,'pd') 刪除標點符號和數字 ab c
5.連線字串。||或者!!將連線兩個字串為乙個字串,其長度等於兩個字串長度之和。比方說one=abc,two=def,則one||two將返回abcdef.
cat函式等同於||,除了返回的字串的長度以外,其預設值是200.cats函式在連線字串前去掉字串前面和後面的空格。catx類似於cats,在去掉前後的空格後,會在連線的兩字串中間插入分隔符。下述**為其例子。
title "demonstrating the concatenation functions";
data _null_;
length join name1–name4 $ 15;
first = 'ron ';
last = 'cody ';
join = ':' || first || ':';
name1 = first || last;
name2 = cat(first,last);
name3 = cats(first,last);
name4 = catx(' ',first,last);
file print;
put join= /
name1= /
name2= /
name3= /
name4= /;
run;
輸出結果
demonstrating the concatenation functions
join=:ron :
name1=ron cody
name2=ron cody
name3=roncody
name4=ron cody
6.find函式。其語法形式如下
find(string, find-string, modifiers, starting-position)
7.字串拆分函式scan.scan函式提出以空格或標點符號隔開的第n個單詞。不同於trim,trim只是提取字元。
8.比較字串函式compare
9.模糊匹配函式spedis.例如
data fuzzy;
input name $20.;
value = spedis(name,'friedman');
datalines;
friedman
freedman
xriedman
freidman
friedmann
alfred
friedman
;返回結果如下
listing of fuzzy
name value
friedman 0
freedman 12
xriedman 25
freidman 6
friedmann 3
alfred 100
friedman 87
當兩個字串完全匹配時,將返回0.第乙個字元匹配錯誤,將比其它字元匹配錯誤所得的處罰分數更大。
10.字串替換
函式translate會替換某個字元,而transwrd會替換某個單詞。例如
data trans;
input answer : $5.;
answer = translate(answer,'abcde','12345');
datalines;
14325
ab123
51492
;得到結果如下
answer
adcbe
ababc
ead9b
tranwrd經常用於標準化位址等,如以street替換st.,以road替換rd.,等等
字串處理函式
1 puts 向顯示器輸出字串 原型 int puts const char s 標頭檔案 include 返回值 成功返回輸出的字元數,失敗返回eof puts 函式與printf 輸出字串的區別 1.puts在輸出字串時,遇到 0 會自動終止輸出,並將 0 轉換為 n 來輸出 2.printf在...
字串處理函式
puts 函式 用來向標準輸出裝置 螢幕 寫字串並換行,其呼叫格式為 puts s 其中s為字串變數 字串陣列名或字串指標 puts 函式的作用與語printf s n s 相同,將緩衝區的字元輸出到標準輸出,遇到空字元截至,並且在末尾新增乙個換行符。gets 函式用來從標準輸入裝置 鍵盤 讀取字串...
字串處理函式
下面介紹幾個最常用的字串函式。格式 puts 字元陣列名 功能 把字元陣列中的字串輸出到顯示器。即在螢幕上顯示該字串。例7 12 include stdio.h main 從程式中可以看出puts函式中可以使用轉義字元,因此輸出結果成為兩行。puts函式完全可以由printf函式取代。當需要按一定格...