利用SAS進(jìn)行數(shù)據(jù)清洗技術(shù)——缺失值查詢

本篇文章介紹如何利用sas進(jìn)行缺失值的查詢工作。

假定我們有數(shù)據(jù)集aa,包含如下變量(數(shù)據(jù)省略):

ID dose gender age t0 t1 a1 a2

最簡單的方式當(dāng)然就是挨個變量找缺失值,如下:

data missing;

set aa;

if id=. or dose=. or gender=. or age=. or t0=. or t1=. or a1=. or a2=.;

proc print;

run;

這種方式很好理解,就是利用if語句逐個判斷每個變量是否有缺失(注意,如果變量時文本型,不能寫=.,而是=" "),但缺點也是顯而易見的,如果不是現(xiàn)在的8個變量,而是80個變量,那寫一遍估計要累個半死。所以我們用下面的語句節(jié)省體力:

data missing(drop=i);

set aa;

array num{8} id dose gender age t0 t1 a1 a2;

do i=1 to 8;

if num{i}=. then output;

end;

這種方式好像比上面的更復(fù)雜了,但效率提高了n倍(取決于你的變量有多少)。這種方式是利用數(shù)組判斷缺失值,不管有100個還是1000個變量,對數(shù)組來說沒什么區(qū)別,只是數(shù)組中變量的個數(shù)改變一下而已(如本例中的8)。

當(dāng)這種方式仍不是最節(jié)省的,因為我們還是需要把這8個變量一一寫出來,那可不可以就不寫變量名呢。當(dāng)然可以,還有更簡單的方式如下:

data missing(drop=i);

set aa;

array num{*} _all_;

do i=1 to dim(num);

if num{i}=. then output;

end;

當(dāng)這種方式更簡單了,而且是個通用語句,不管你有10個還是1000個變量,都可以用這種方式來查詢,一個字母都不用改。當(dāng)然前提是所有變量都是數(shù)值型,如果是文本型,那就應(yīng)該是num{i}=" "。

還有另外一種非常簡潔 的方式是利用函數(shù),如下:

data missing(drop=i);

set aa;

array num{*} _all_;

do i=1 to dim(num);

if missing(num{i}) then output;

end;

用函數(shù)的這種方式有什么好處呢?起碼有一點,你不用考慮到底是數(shù)值還是文本,全部都是missing(變量)就行了。否則你還得想著數(shù)值是.,文本是" "。一不小心忘了容易出問題。

前面所說的都是假定所有變量都是同一種類型的,如果變量中既有數(shù)值型,又有文本型,那怎么辦呢?如下程序就很簡單了:

data missing(drop=i);

set aa;

array a _numeric_;

do i=1 to dim(a);

if missing(a) then output;

end;

array b_character_;

do i=1 to dim(b);

if missing(b) then output;

end;

毫不夸張地說,這個簡直就是個缺失值的通用語句,同時遍歷了數(shù)據(jù)集中的數(shù)值型和文本型的所有缺失值。所有的缺失值查找,幾乎都可以這一語句來實現(xiàn),它幾乎包含了所有的可能情況,還能苛求什么呢?套用就行了。

來源 | 經(jīng)管之家論壇

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

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,932評論 0 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 個人學(xué)習(xí)批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 5,001評論 0 11
  • 不成文,隨便說說。 寶寶滿兩個月了,做了兩個月的媽媽了,寶寶睡覺抱著寶寶看她昨天前天的照片視頻,自己就傻傻笑了。 ...
    了了麻麻閱讀 229評論 2 0
  • 低頭收好面具,一邊吩咐下去。 “侍從,我現(xiàn)在這個樣子在這深山里尚可,卻不好見人,準(zhǔn)備著點黑灰什么的,明天涂在臉上。...
    悅己_蕾蕾閱讀 302評論 0 1

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