SAS編程技巧(一)
這段時間的工作中遇到了一些小問題,今天把一些編程技巧分享給大家,也可以說是避坑指南,哈哈!
1.在使用format給變量賦空值
在使用format給對應的變量賦空值的時候要用單引號加空格‘ ’或者雙引號“”,而不能直接使用‘’,如果直接使用‘’,就會出現(xiàn)結果為’的情況。
proc format;
value aa
1 = '男'
2 = '女'
/* 3 = " "*/
/* 3 = ' '*/
3 = ''
;
run;
data class;
length name $8;
input name age sex;
cards;
張三 18 1
李四 20 2
王五 19 3
;
run;
data class1;
set class;
sexc=put(sex,aa.);
run;
2.省略data=
在對上一個數(shù)據(jù)集進行操作的時候可以省略data=這一步,比如我們要對剛才生成的class1數(shù)據(jù)集進行排序,可以這樣寫:
proc sort data=class1;
by name;
run;
也可以寫成:
proc sort;
by name;
run;
這個方法只能對上一步生成的數(shù)據(jù)集進行操作,同樣適用于其他proc步。
3.警惕“套娃”
index函數(shù)在我們的工作中經常使用,主要是判斷某個字符串是否在變量中出現(xiàn),這時候需要注意的是我們指定的字符串是否是唯一的,比如我們想找的是“藥物治療”,但是變量中有“非藥物治療”,這時候就會出現(xiàn)誤判的情況。這個錯誤在工作中很難發(fā)現(xiàn),要格外地小心。
4.讓SAS也能用中文變量名
默認的SAS命名規(guī)則是無法使用中文等特殊字符作為SAS名,不過我們可以通過validvarname=any系統(tǒng)選項,突破此限制,不僅如此,我們甚至可以通過validmemname=extend系統(tǒng)選項突破數(shù)據(jù)集名稱的限制。
optionsvalidmemname=extend validvarname=any;