SAS NOTES 字串處理函式

2021-09-06 08:03:20 字數 4002 閱讀 6797

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函式取代。當需要按一定格...