R語言給我們提供了一些有用的函式來處理資料的缺失值,讓我們先來看看什么是資料的缺失值吧!
一.資料的缺失值
在R語言當中資料的缺失值用NA來表示,有的時候我們會發現在一個資料集當中的某些值顯示的是NA,那么就說明這個值是缺失的值了,那么缺失值是否可以用來做運算呢?
比如說我們建立一個第一個數字為缺失值的向量,第一個數字為NA,后面的數字為1到49,那因此我們可以得到:
> a<-c(NA,1:49)
構建出來的a為:
> a [1] NA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [22] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [43] 42 43 44 45 46 47 48 49
如果我們想要計算a當中所有數字的和將會也是NA,因為在這個序列當中一旦有一個數值為缺失值,那么資料的總和很顯然也不知道是多少,如下面的代碼所示:
> sum(a) [1] NA
那么我們如何才能夠解決這個問題呢?那就是在使用sum()函式的時候,后面加上引數na.rm=T即可,英文含義是移除(remove)缺失值(na)是真的(T),代碼如下所示:
> sum(a,na.rm = T) [1] 1225
這樣我們就可以計算除了缺失值之外所有數字的總和了,同樣的我們可以將這個規律應用于求解平均值mean:
> mean(a,na.rm = T) [1] 25
那么我們思考一下我們求解的平均值除以的數字總數是加上了NA這個數還是加上呢?答案是沒有!因為缺失值已經被我們移除這個序列了,系統并不會記錄在內,我們可以利用一個新的序列來證明這一點:
> mean(1:49) [1] 25
在只有49個數字的情況下,得到的平均值還是25,所以確實我們通過這個引數已經將缺失值移除了,
二.資料清洗
假設我們有一個資料框變數,里面有各種變數,其中有一些變數已經被缺失了,為NA值,一個典型的資料框變數我們能夠使用的,現成的資料集為VIM包里的sleep資料框,引入它的代碼如下:
> library(VIM) Loading required package: colorspace Loading required package: grid Loading required package: data.table data.table 1.12.8 using 2 threads (see ?getDTthreads). Latest news: r-datatable.com VIM is ready to use. Since version 4.0.0 the GUI is in its own package VIMGUI. Please use the package to use the new (and old) GUI. Suggestions and bug-reports can be submitted at: https://github.com/alexkowa/VIM/issues Attaching package: ‘VIM’ The following object is masked from ‘package:datasets’: sleep Warning messages: 1: package ‘VIM’ was built under R version 3.6.3 2: package ‘data.table’ built under R version 3.6.3
然后引入其中的sleep資料集:
> sleep BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger 1 6654.000 5712.00 NA NA 3.3 38.6 645.0 3 5 3 2 1.000 6.60 6.3 2.0 8.3 4.5 42.0 3 1 3 3 3.385 44.50 NA NA 12.5 14.0 60.0 1 1 1 4 0.920 5.70 NA NA 16.5 NA 25.0 5 2 3 5 2547.000 4603.00 2.1 1.8 3.9 69.0 624.0 3 5 4 6 10.550 179.50 9.1 0.7 9.8 27.0 180.0 4 4 4 7 0.023 0.30 15.8 3.9 19.7 19.0 35.0 1 1 1 8 160.000 169.00 5.2 1.0 6.2 30.4 392.0 4 5 4 9 3.300 25.60 10.9 3.6 14.5 28.0 63.0 1 2 1 10 52.160 440.00 8.3 1.4 9.7 50.0 230.0 1 1 1 11 0.425 6.40 11.0 1.5 12.5 7.0 112.0 5 4 4 12 465.000 423.00 3.2 0.7 3.9 30.0 281.0 5 5 5 13 0.550 2.40 7.6 2.7 10.3 NA NA 2 1 2 14 187.100 419.00 NA NA 3.1 40.0 365.0 5 5 5 15 0.075 1.20 6.3 2.1 8.4 3.5 42.0 1 1 1 16 3.000 25.00 8.6 0.0 8.6 50.0 28.0 2 2 2 17 0.785 3.50 6.6 4.1 10.7 6.0 42.0 2 2 2 18 0.200 5.00 9.5 1.2 10.7 10.4 120.0 2 2 2 19 1.410 17.50 4.8 1.3 6.1 34.0 NA 1 2 1 20 60.000 81.00 12.0 6.1 18.1 7.0 NA 1 1 1 21 529.000 680.00 NA 0.3 NA 28.0 400.0 5 5 5 22 27.660 115.00 3.3 0.5 3.8 20.0 148.0 5 5 5 23 0.120 1.00 11.0 3.4 14.4 3.9 16.0 3 1 2 24 207.000 406.00 NA NA 12.0 39.3 252.0 1 4 1 25 85.000 325.00 4.7 1.5 6.2 41.0 310.0 1 3 1 26 36.330 119.50 NA NA 13.0 16.2 63.0 1 1 1 27 0.101 4.00 10.4 3.4 13.8 9.0 28.0 5 1 3 28 1.040 5.50 7.4 0.8 8.2 7.6 68.0 5 3 4 29 521.000 655.00 2.1 0.8 2.9 46.0 336.0 5 5 5 30 100.000 157.00 NA NA 10.8 22.4 100.0 1 1 1 31 35.000 56.00 NA NA NA 16.3 33.0 3 5 4 32 0.005 0.14 7.7 1.4 9.1 2.6 21.5 5 2 4 33 0.010 0.25 17.9 2.0 19.9 24.0 50.0 1 1 1 34 62.000 1320.00 6.1 1.9 8.0 100.0 267.0 1 1 1 35 0.122 3.00 8.2 2.4 10.6 NA 30.0 2 1 1 36 1.350 8.10 8.4 2.8 11.2 NA 45.0 3 1 3 37 0.023 0.40 11.9 1.3 13.2 3.2 19.0 4 1 3 38 0.048 0.33 10.8 2.0 12.8 2.0 30.0 4 1 3 39 1.700 6.30 13.8 5.6 19.4 5.0 12.0 2 1 1 40 3.500 10.80 14.3 3.1 17.4 6.5 120.0 2 1 1 41 250.000 490.00 NA 1.0 NA 23.6 440.0 5 5 5 42 0.480 15.50 15.2 1.8 17.0 12.0 140.0 2 2 2 43 10.000 115.00 10.0 0.9 10.9 20.2 170.0 4 4 4 44 1.620 11.40 11.9 1.8 13.7 13.0 17.0 2 1 2 45 192.000 180.00 6.5 1.9 8.4 27.0 115.0 4 4 4 46 2.500 12.10 7.5 0.9 8.4 18.0 31.0 5 5 5 47 4.288 39.20 NA NA 12.5 13.7 63.0 2 2 2 48 0.280 1.90 10.6 2.6 13.2 4.7 21.0 3 1 3 49 4.235 50.40 7.4 2.4 9.8 9.8 52.0 1 1 1 50 6.800 179.00 8.4 1.2 9.6 29.0 164.0 2 3 2 51 0.750 12.30 5.7 0.9 6.6 7.0 225.0 2 2 2 52 3.600 21.00 4.9 0.5 5.4 6.0 225.0 3 2 3 53 14.830 98.20 NA NA 2.6 17.0 150.0 5 5 5 54 55.500 175.00 3.2 0.6 3.8 20.0 151.0 5 5 5 55 1.400 12.50 NA NA 11.0 12.7 90.0 2 2 2 56 0.060 1.00 8.1 2.2 10.3 3.5 NA 3 1 2 57 0.900 2.60 11.0 2.3 13.3 4.5 60.0 2 1 2 58 2.000 12.30 4.9 0.5 5.4 7.5 200.0 3 1 3 59 0.104 2.50 13.2 2.6 15.8 2.3 46.0 3 2 2 60 4.190 58.00 9.7 0.6 10.3 24.0 210.0 4 3 4 61 3.500 3.90 12.8 6.6 19.4 3.0 14.0 2 1 1 62 4.050 17.00 NA NA NA 13.0 38.0 3 1 1
我們可以看到里面有很多已經缺失的資料:NA,我們如何才能夠將它們清理掉呢?那就是利用na.omit()函式,這個函式會將所有出現NA缺失值的行全部洗掉,只保留在資料框里沒有缺失值的行,代碼的使用如下所示:
> na.omit(sleep)#將資料框當中擁有無效值NA的那一行全部洗掉 BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger 2 1.000 6.60 6.3 2.0 8.3 4.5 42.0 3 1 3 5 2547.000 4603.00 2.1 1.8 3.9 69.0 624.0 3 5 4 6 10.550 179.50 9.1 0.7 9.8 27.0 180.0 4 4 4 7 0.023 0.30 15.8 3.9 19.7 19.0 35.0 1 1 1 8 160.000 169.00 5.2 1.0 6.2 30.4 392.0 4 5 4 9 3.300 25.60 10.9 3.6 14.5 28.0 63.0 1 2 1 10 52.160 440.00 8.3 1.4 9.7 50.0 230.0 1 1 1 11 0.425 6.40 11.0 1.5 12.5 7.0 112.0 5 4 4 12 465.000 423.00 3.2 0.7 3.9 30.0 281.0 5 5 5 15 0.075 1.20 6.3 2.1 8.4 3.5 42.0 1 1 1 16 3.000 25.00 8.6 0.0 8.6 50.0 28.0 2 2 2 17 0.785 3.50 6.6 4.1 10.7 6.0 42.0 2 2 2 18 0.200 5.00 9.5 1.2 10.7 10.4 120.0 2 2 2 22 27.660 115.00 3.3 0.5 3.8 20.0 148.0 5 5 5 23 0.120 1.00 11.0 3.4 14.4 3.9 16.0 3 1 2 25 85.000 325.00 4.7 1.5 6.2 41.0 310.0 1 3 1 27 0.101 4.00 10.4 3.4 13.8 9.0 28.0 5 1 3 28 1.040 5.50 7.4 0.8 8.2 7.6 68.0 5 3 4 29 521.000 655.00 2.1 0.8 2.9 46.0 336.0 5 5 5 32 0.005 0.14 7.7 1.4 9.1 2.6 21.5 5 2 4 33 0.010 0.25 17.9 2.0 19.9 24.0 50.0 1 1 1 34 62.000 1320.00 6.1 1.9 8.0 100.0 267.0 1 1 1 37 0.023 0.40 11.9 1.3 13.2 3.2 19.0 4 1 3 38 0.048 0.33 10.8 2.0 12.8 2.0 30.0 4 1 3 39 1.700 6.30 13.8 5.6 19.4 5.0 12.0 2 1 1 40 3.500 10.80 14.3 3.1 17.4 6.5 120.0 2 1 1 42 0.480 15.50 15.2 1.8 17.0 12.0 140.0 2 2 2 43 10.000 115.00 10.0 0.9 10.9 20.2 170.0 4 4 4 44 1.620 11.40 11.9 1.8 13.7 13.0 17.0 2 1 2 45 192.000 180.00 6.5 1.9 8.4 27.0 115.0 4 4 4 46 2.500 12.10 7.5 0.9 8.4 18.0 31.0 5 5 5 48 0.280 1.90 10.6 2.6 13.2 4.7 21.0 3 1 3 49 4.235 50.40 7.4 2.4 9.8 9.8 52.0 1 1 1 50 6.800 179.00 8.4 1.2 9.6 29.0 164.0 2 3 2 51 0.750 12.30 5.7 0.9 6.6 7.0 225.0 2 2 2 52 3.600 21.00 4.9 0.5 5.4 6.0 225.0 3 2 3 54 55.500 175.00 3.2 0.6 3.8 20.0 151.0 5 5 5 57 0.900 2.60 11.0 2.3 13.3 4.5 60.0 2 1 2 58 2.000 12.30 4.9 0.5 5.4 7.5 200.0 3 1 3 59 0.104 2.50 13.2 2.6 15.8 2.3 46.0 3 2 2 60 4.190 58.00 9.7 0.6 10.3 24.0 210.0 4 3 4 61 3.500 3.90 12.8 6.6 19.4 3.0 14.0 2 1 1
這樣我們就可以看到處理后的資料已經沒有缺失的NA值了!資料清理完畢,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/404.html
標籤:R
上一篇:R語言入門:因子的使用
下一篇:R語言實作定性資料的秩和檢驗
