SAS中幾個常用的字符函數(shù)

本文將介紹SAS中處理字符串時最常用的5個函數(shù):SUBSTR、TRANWRD、TRANSLATE、COMPRESS、CAT。

1. SUBSTR函數(shù):用以提取或替換特定位置的字符

(1). (right of =) Function,提取字符:Substr(s,p,n)從字符串s中的第p個字符開始提取n個字符的子串。

example:

/*從x中提取第3-4個字符*/

data?_null_;

x="1234ABCD";

y=substr(x,3,2);

puty=;

run;

輸出: y=34

(2). (left of =) Function,字符替換:Substr(s,p,n)=characters-to-replace,從變量s的p個字符開始替換n個字符

example:

/*從x中將第1-2個字符替換為EF*/

data?_null_;

x="1234ABCD";

substr(x,1,2)="EF";

put?x=;

run;

輸出:x=EF34ABCD

注意:

1. 必須是從字符變量中提取,對數(shù)值變量不起作用,必須轉(zhuǎn)換為字符變量,如果是數(shù)字變量,在調(diào)用substr函數(shù)時會自動把數(shù)字變量轉(zhuǎn)為字符變量,不過需要注意的是轉(zhuǎn)化為的字符變量采用的是best12.格式。

2. n的長度不能超過p后面的長度,例如s=scorecard,b=Substr(s,5,5)系統(tǒng)會有提示。

3. 如果缺失n的話,SAS則會提取p后面全部字符,如果是替換的話,則不能缺失n。

4. 對于漢字的截取若使用substr函數(shù)將輸出亂碼,使用ksubstr函數(shù)即可,另外,ksubstrb函數(shù)可針對字節(jié)進(jìn)行截取。

2. TRANWRD函數(shù):用以替換特定字符

example:

/*從x中將字符"AB"替換為"ef"*/

data?_null_;

x="ABabCDEFGABCD";

m="2023 02 14";

y=tranwrd(x,"AB","ef");

n=tranwrd(m," ","-");

put?y= n=;

run;

輸出: y=efabCDEFGefCD? ? n=2023-02-014

注意:

TRANWRD函數(shù)的字符串替換區(qū)分大小寫。

3. TRANSLATE函數(shù):用以替換字符排列順序

TRANSLATE( to, s,?from):?將字符串s從from的排序轉(zhuǎn)換成to的排序

example:

/*將x中的字符串逆序輸出*/

data?_null_;

x="ABCDE";

y=translate("54321",x,"12345");

put?y=;

run;

輸出: y=EDCBA

4. COMPRESS函數(shù):用以體剔除或保留特定字符

COMPRESS?(<source>,<chars>,<modifiers>)

source 指定一個要被移除字符的源字符串。chars 指定一欄初始字符,默認(rèn)它是要從source里移除的。modifiers? 指定一個修飾符,函數(shù)的具體功能。如:

a 增加(A - Z, a - z)到初始字符里(chars)。

d 增加數(shù)字到初始字符里(chars)。

f 增加下劃線和字母 (A - Z, a - z) 到初始字符里(chars)。

g 增加圖形字符到初始字符里(chars)。

k 不移除初始字符(chars)而是返回這些字符。

l? 增加小寫字母(a - z)。

n 增加數(shù)字、下劃線和字母(A - Z, a - z)。

p 增加標(biāo)點(diǎn)符號。

s 增加空格,包括空格,水平制表符,垂直制表符,回車符,換行符和換頁符。

t 剪掉尾部空格。

u 增加大寫字母(A - Z)。

w 增加可印刷的字符。

X 增加十六進(jìn)制字符

example:

/*從x中將字符"A"及小寫字母剔除*/

data?_null_;

x="ABabCD10GABCD";

y=compress(x,"A","l");

z=compress(x,,'kd');/*僅保留變量中的數(shù)字*/

put?y= z=;

run;

輸出:y=BCD10GBCD? z=10

注意:

1. 只有source,移除空格。

2. 只有source,chars時,從source中移除chars。

3.?source ,chars,modifiers都有時,modifiers??K決定保留還是移除。無K時,移除chars加上modifiers指定的。

5. CAT函數(shù):用以拼接字符串

CAT(A,B): 拼接字符串A和B,并保留首尾全部空格(同A||B)

CATS(A,B):?拼接字符串A和B,并去掉首尾全部空格(同strip(A)||strip(B))

CATX("x",A,B):?拼接字符串A和B,并去掉首尾全部空格,并且在字符串之間加上一個指定的字符串"x"(同strip(A)||"x"||strip(B))

CATT(A,B):?拼接字符串A和B并去掉各字符串尾部空格(同trim(A)||trim(B))

example:

data?_null_;

a='i';

b=' love ';

c=' you ';

s1=cat(a,b,c);

s2=cats(a,b,c);

s3=catx('_',a,b,c);

s4=catt('/',a,b,c);

put?s1=/s2=/s3=/s4=;

run;

輸出:

s1=i ?love? you

s2=iloveyou

s3=i_love_you?

s4=/i love you

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 順序讀寫文件 文件打開后可以對其進(jìn)行讀寫操作,打開時需要指定相應(yīng)的打開模式)。讀寫操作分為順序讀寫操作和隨機(jī)讀寫操...
    4d29e26b2bce閱讀 202評論 0 0
  • 最近頻繁遇到這幾個函數(shù),而且還總是分不清他們?????? 1. str()str()函數(shù)可以獲取向量的內(nèi)容和屬性 2. ...
    Lily_瘋丫頭閱讀 136評論 0 0
  • 100個常用的javascript函數(shù) 1、原生JavaScript實(shí)現(xiàn)字符串長度截取 復(fù)制代碼代碼如下: fun...
    老頭子_d0ec閱讀 410評論 0 0
  • 泛型使用場景:我們可以寫一個泛型方法來對一個對象數(shù)組排序。然后,調(diào)用該泛型方法來對整型數(shù)組、浮點(diǎn)數(shù)數(shù)組、字符串?dāng)?shù)組...
    叢小叢閱讀 113評論 0 1
  • R中字符串處理:正則表達(dá)式 cr一遇之見一遇之見3月12日 正則表達(dá)式規(guī)則 元字符:一些特殊的字符在正則表達(dá)式中不...
    PureZhang閱讀 1,982評論 0 0

友情鏈接更多精彩內(nèi)容