缺失值處理最簡單的辦法就是直接刪除了,數(shù)據(jù)存儲在csv文件里鸯乃,使用R語言的
read.csv()
函數(shù)讀入,然后使用na.omit()
將缺失值忽略掉就可以
當然你的數(shù)據(jù)缺失值比較多的話,直接將缺失值刪除會損失很多數(shù)據(jù)株扛,這個時候可以考慮缺失值填充,如果是純數(shù)字的數(shù)據(jù)比較簡單的是使用平均值或者中位數(shù)填充
使用中位數(shù)或者平均值填充可以使用zoo
這個R包中的na.aggregate()
函數(shù)
df<-data.frame(A=c(1,3,5,7,NA),
B=c(2,4,6,8,NA))
na.aggregate(df,FUN=mean)
na.aggregate(df,FUN=median)
但是數(shù)據(jù)集里如果還有分類變量的話汇荐,這個時候可以采用mice
這個R包中的mice()
函數(shù)洞就,這里有很多填充方法可以選擇
這些方法的具體原理這里就不介紹了,因為我也不太懂掀淘,這里就直接選擇一個聽起來比較高端的方法:隨機森林旬蟋,因為他什么類型的數(shù)據(jù)都適用
下面直接使用mice這個包內(nèi)置的數(shù)據(jù)集boys進行展示
首先使用visdat
這個R包對數(shù)據(jù)的缺失情況進行可視化展示
library(mice)
library(visdat)
library(ggplot2)
vis_dat(boys)
圖中灰色的部分就是缺失值,可以看到缺失數(shù)據(jù)還挺多的
接下來用隨機森林的辦法來填充缺失值
tpm<-mice(boys,method = "rf",m=1,seed=1234)
獲得填充后的數(shù)據(jù)集
imputed_df<-complete(tpm)
最后再來畫一個圖展示一下
vis_dat(imputed_df)+
theme(legend.justification = c(0,1))
從圖上可以看到缺失值已經(jīng)被全部填充
具體填充的準確性如何判斷呢革娄?暫時還不知道
好了今天的內(nèi)容就介紹這么多了
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本
小明的數(shù)據(jù)分析筆記本 公眾號 主要分享:1倾贰、R語言和python做數(shù)據(jù)分析和數(shù)據(jù)可視化的簡單小例子;2拦惋、園藝植物相關(guān)轉(zhuǎn)錄組學(xué)匆浙、基因組學(xué)、群體遺傳學(xué)文獻閱讀筆記厕妖;3首尼、生物信息學(xué)入門學(xué)習資料及自己的學(xué)習筆記!