缺失值的處理(基于R語(yǔ)言)

Part 1. basic skills
  • In R, missing values are represented by the symbol NA (not available).
  • Impossible values (e.g., dividing by zero) are represented by the symbol NaN (not a number).
  • Unlike SAS, R uses the same symbol for character and numeric data.

Testing for Missing Values

is.na(x) # returns TRUE if x is missing

y <- c(1,2,3,NA)
is.na(y) # returns a vector (F F F T)

Recoding Values to Missing

mydata$v1[mydata$v1==99] <- NA
# recode 99 to missing for variable v1
# select rows where v1 is 99 and recode column v1

Excluding Missing Values from Analyses
Arithmetic functions on missing values yield missing values.

x <- c(1,2,NA,3)
mean(x) # returns NA
mean(x, na.rm=TRUE) # returns 2

The function complete.cases() returns a logical vector indicating which cases are complete.

# list rows of data that have missing values
mydata[!complete.cases(mydata),]

The function na.omit() returns the object with listwise deletion of missing values.

# create new dataset without missing data
newdata <- na.omit(mydata)
Part 2: 進(jìn)階

2.1 判斷數(shù)據(jù)有多少缺失值

 sum(is.na(mydata$week))
# [1] 1686

2.2 mice包中的md.pattern()函數(shù)可以生成一個(gè)以矩陣或數(shù)據(jù)框形式展示缺失值模式的表格。

library(mice)
md.pattern(sleep)

# Output:
#    BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD   
# 42       1        1    1   1      1     1    1    1     1    1  0
# 9        1        1    1   1      1     1    1    1     0    0  2
# 3        1        1    1   1      1     1    1    0     1    1  1
# 2        1        1    1   1      1     1    0    1     1    1  1
# 1        1        1    1   1      1     1    0    1     0    0  3
# 1        1        1    1   1      1     1    0    0     1    1  2
# 2        1        1    1   1      1     0    1    1     1    0  2
# 2        1        1    1   1      1     0    1    1     0    0  3
#          0        0    0   0      0     4    4    4    12   14 38
NAFig1.png

解讀:0 表示變量的列中沒(méi)有缺失,1 則表示有缺失值。
第一行給出了沒(méi)有缺失值的數(shù)目(共多少行)稽屏。
第一列表示各缺失值模式的總數(shù)辕狰。
最后一行給出了每個(gè)變量的缺失值數(shù)目装蓬。

最后一列給出了缺失的變量的數(shù)目(這些變量存在缺失值)鬼佣。
第一列的數(shù)字和對(duì)應(yīng)的最后一列數(shù)字相乘再求和垛叨,即為缺失值總數(shù)迅腔。
Sleep這個(gè)數(shù)據(jù)集中装畅,總共有38個(gè)數(shù)據(jù)缺失(顯示在右下角)。

2.3 缺失值可視化

library(VIM)
aggr(sleep,prop=F,numbers=T)
NAFig2.jpg
matrixplot(sleep)
NAFig3.png

淺色表示值小沧烈,深色表示值大掠兄,默認(rèn)缺失值為紅色。

2.4 刪除含有缺失值的行的函數(shù)有na.omit()complete.cases()锌雀。注意返回結(jié)果不同蚂夕。

newdata1 <- na.omit(sleep) #返回 values
newdata2 <- sleep[complete.cases(sleep),] # 返回?cái)?shù)據(jù)框
參考資料:

Quick-R: Missing Data
知乎博主@斑馬R語(yǔ)言缺失值處理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腋逆,隨后出現(xiàn)的幾起案子婿牍,更是在濱河造成了極大的恐慌,老刑警劉巖惩歉,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件等脂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡撑蚌,警方通過(guò)查閱死者的電腦和手機(jī)上遥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锨并,“玉大人露该,你說(shuō)我怎么就攤上這事睬棚〉谥螅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵抑党,是天一觀的道長(zhǎng)包警。 經(jīng)常有香客問(wèn)我,道長(zhǎng)底靠,這世上最難降的妖魔是什么害晦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上壹瘟,老公的妹妹穿的比我還像新娘鲫剿。我一直安慰自己,他們只是感情好稻轨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布灵莲。 她就那樣靜靜地躺著,像睡著了一般殴俱。 火紅的嫁衣襯著肌膚如雪政冻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天线欲,我揣著相機(jī)與錄音明场,去河邊找鬼。 笑死李丰,一個(gè)胖子當(dāng)著我的面吹牛苦锨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趴泌,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逆屡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了踱讨?” 一聲冷哼從身側(cè)響起魏蔗,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痹筛,沒(méi)想到半個(gè)月后莺治,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帚稠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年谣旁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滋早。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡榄审,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杆麸,到底是詐尸還是另有隱情搁进,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布昔头,位于F島的核電站饼问,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏揭斧。R本人自食惡果不足惜莱革,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盅视,春花似錦捐名、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拇砰,卻和暖如春梅忌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背除破。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工牧氮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瑰枫。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓踱葛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親光坝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尸诽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容