#缺失值
an=c(1,2,NA)is.na(an) #會形成一個布爾向量
布爾向量就是一群像(FALSE,FALSE,TURE)這樣的向量。
關於缺失值還有一個函數:complete.cases函數
該函數與is.na的區別在於:
1、輸出資料格式不同。is.na按照資料框格式形成一個(FALSE,FALSE,TURE)列,而complete.cases形成是一個數列向量,不再是按照資料框格式;
2、輸出資料內容不同。complete.cases輸出的邏輯向量與is.na正好相反,is.na的TURE為是缺失值;complete.cases的TURE為完整值。
an=c(1,2,NA)sum(complete.cases(an)) sum(!complete.cases(an))#==sum(is.na(an))mean(!complete.cases(an)) #獲得缺失比例==1/3
疑惑:為什麼布爾向量,sum一下可以得到數值。 ——因為R預設將TURE、FALSE當做1、0
#計算缺失值個數
sum(is.na(an)) #單數列,sum一下可以直接計算“Ture”的數值和colSums(is.na(an),na.rm = T) #多維數列,按列,na.rm為是否需要忽略缺失值,na.rm=T表示忽略,刪除rowSums(is.na(an),na.rm = T) #多維數列,按行,na.rm為是否需要忽略缺失值,na.rm=T表示忽略,刪除
#資料框中的缺失值操作
#資料框中的缺失值操作
y <- an[is.na(an)] #選中缺失值y<- an[is.na(an)=="TRUE"] #上同,選中缺失值an[is.na(an)] <- 0 # 表示將向量x中所以NA元素用0來代替an[(!is.na(an)) & x>0] -> z #可以用 & 加入其他條件,進行篩選
————————————————————————————————————————————————————————————
缺失值檢測解決方案:
關於缺失值的檢測應該包括:缺失值數量、缺失值比例、缺失值與完整值資料篩選。
#缺失值解決方案sum(complete.cases(saledata)) #is.na(saledata)sum(!complete.cases(saledata))mean(!complete.cases(saledata)) #1/201數字,缺失值比例saledata[!complete.cases(saledata),] #篩選出缺失值的數值