R语言给咱们提供了一些有用的函数来济宁数据的清理来处理数据的缺失值,让咱们先来看看什么是数据的缺失值吧!git
在R语言当中数据的缺失值用NA来表示,有的时候咱们会发如今一个数据集当中的某些值显示的是NA,那么就说明这个值是缺失的值了,那么缺失值是否能够用来作运算呢?github
好比说咱们创建一个第一个数字为缺失值的向量,第一个数字为NA,后面的数字为1到49,那所以咱们能够获得:
函数
> a<-c(NA,1:49)
构建出来的a为:ui
> 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,由于在这个序列当中一旦有一个一个数值为缺失值,那么数据的总和很显然也不知道是多少,以下面的代码所示:spa
> sum(a) [1] NA
那么咱们如何才可以解决这个问题呢?那就是在使用sum()函数的时候,后面加上参数na.rm=T便可,英文含义是移除(remove)缺失值(na)是真的(T),代码以下所示:
code
> sum(a,na.rm = T) [1] 1225
这样咱们就能够计算除了缺失值以外全部数字的总和了。一样的咱们能够将这个规律应用于求解平均值mean:blog
> mean(a,na.rm = T) [1] 25
那么咱们思考一下咱们求解的平均值除以的数字总数是加上了NA这个数仍是加上呢?答案是没有!由于缺失值已经被咱们移除这个序列了,系统并不会记录在内。咱们能够利用一个新的序列来证实这一点:rem
> mean(1:49) [1] 25
在只有49个数字的状况下,获得的平均值仍是25,因此确实咱们经过这个参数已经将缺失值移除了。get
假设咱们有一个数据框变量,里面有各类变量,其中有一些变量已经被缺失了,为NA值。一个典型的数据框变量咱们可以使用的,现成的数据集为VIM包里的sleep数据框,引入它的代码以下:it
> 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值了!数据清理完毕。