当变量中没有数据记录时,会出现数据缺失 错误或值。如果处理不当,这将导致数据建模过程中出现严重问题。最重要的是,大多数算法对丢失数据感到不舒服。
在R中有许多方法可以处理丢失的数据。您可以删除这些记录。但是,请记住,这样做会丢失信息,并且可能会失去建模过程中的潜在优势。另一方面,你可以用数据的平均值和中位数来归因于 缺失数据。在本文中,我们将介绍如何使用** Tidyr包填充R中的缺失值。**
Tidyr是一个R包,它提供了许多功能来帮助您整理数据。数据质量越高,模型越好!
1. R中缺少数据
- 缺失值可以用多种形式表示-- NA、NAN** 等等。
- 它是变量中缺少的记录。它可以是单个值,也可以是整行。
- 在数字数据和分类数据中都可能出现缺失值。
- R提供了许多处理丢失数据的方法
- Tidyr套餐 通过** 自顶向下** 或** Bottom u** p方式,帮助您补齐缺失的数据。
2.R中的Tidyr包
R中的Tidyr包 用于清理R中的原始数据。
- IF提供清理、组织、填充缺失值等功能。
- 我们将使用带有 R管道** 的tidyr。
要在R中安装Tidyr包,请在R中运行以下代码。
1#Install tidyr package
2
3install.packages('tidyr')
4
5#Load the library
6
7library(tidyr)
1package ‘tidyr’ successfully unpacked and MD5 sums checked
加载tidyr 成功后会收到确认消息,如上图所示。
3.创建数据帧
是的,我们必须创建一个有缺失值的简单样本数据框 。这将有助于我们使用tidyr的Fill函数来填充缺失的数据。
1#Create a dataframe
2
3a <- c('A','B','C','D','E','F','G','H','I','J')
4b <- c('Roger','Carlo','Durn','Jessy','Mounica','Rack','Rony','Saly','Kelly','Joseph')
5c <- c(86,NA,NA,NA,88,NA,NA,86,NA,NA)
6
7df <- data.frame(a,b,c)
8df
1a b c
21 A Roger 86
32 B Carlo NA
43 C Durn NA
54 D Jessy NA
65 E Mounica 88
76 F Rack NA
87 G Rony NA
98 H Saly 86
109 I Kelly NA
1110 J Joseph NA
好吧,我们得到了我们的数据框,但有很多缺失值。因此,在这些情况下,您的数据有越来越多的缺失值,您可以使用R中的Fill函数来填充相应的值/邻居值来代替丢失的数据。
4.两种不同的方式
是的,你可以像我前面说的那样填写数据。这一过程包括两种方法:
- 向上 -在填充缺失的值时,必须指定值的填充方向。如果选择向上,则填充过程将是自下而上的。
- 向下 -在此方法中,您必须将填充方向设置为向下。
没拿到吗?
别担心。我们将通过一些例子来说明这一点,您将了解事情是如何工作的。
5.补齐缺失的值--‘up’
在这个过程中,我们有一个包含3列和10条数据记录的数据框。在使用Fill函数处理丢失的数据之前,您必须确保一些事情-
有时在收集数据时,人们可能会输入1个值来表示某些值,因为它们是相同的。
例如:采集年龄时,如果有10个人的年龄是25岁,则可以相对于最后一个人提到25岁,表示10个人的年龄都是25岁。
请注意,这不是您面临的最常见的情况。但是,这样做的目的是为了确保,当您在这种空间中时,您可以使用Fill函数来处理此问题。
1#Dataframe
2
3 a b c
41 A Roger 86
52 B Carlo NA
63 C Durn NA
74 D Jessy NA
85 E Mounica 88
96 F Rack NA
107 G Rony NA
118 H Saly 86
129 I Kelly NA
1310 J Joseph NA
14
15#Creste new dataframe by filling missing values (Up)
16df1 <- df %>% fill(c, .direction = 'up')
17df1
1a b c
21 A Roger 86
32 B Carlo 88
43 C Durn 88
54 D Jessy 88
65 E Mounica 88
76 F Rack 86
87 G Rony 86
98 H Saly 86
109 I Kelly NA
1110 J Joseph NA
您可以观察到,Fill函数使用向上方向(自下而上)填充了缺失的值。
- 可以看到最后一行有2个NA值这是因为Fill函数首先遇到NA值,并在方向向上时将其填充到下一个NA值。
6.补齐缺失的值-‘Down’
好的,这里我们将使用‘Down’方法来填充数据中缺失的值。始终确保我在前面部分提到的一些假设,以了解你正在做什么以及将会有什么结果。
1#Data
2
3 a b c
41 A Roger 86
52 B Carlo NA
63 C Durn NA
74 D Jessy NA
85 E Mounica 88
96 F Rack NA
107 G Rony NA
118 H Saly 86
129 I Kelly NA
1310 J Joseph NA
14
15#Creates new dataframe by filling missing values (Down) - (Top-Down approach)
16
17df1 <- df %>% fill(c, .direction = 'down')
18df1
1a b c
21 A Roger 86
32 B Carlo 86
43 C Durn 86
54 D Jessy 86
65 E Mounica 88
76 F Rack 88
87 G Rony 88
98 H Saly 86
109 I Kelly 86
1110 J Joseph 86
- 这里没有遗漏的值。这是因为Fill函数首先遇到的有效数据值是86。它将把86填充到下一个NA区域,直到它找到有效的数据记录。
7.收尾
在R中填充缺失值是分析任何具有空值的数据时最重要的过程。事情对你来说可能有点难,但要确保你通过文章一次或两次来简明扼要地理解它。这不是一块难消化的蛋糕!
我希望这种方法能对你今后的任务有所帮助。现在就到这里吧。快乐R!:)
更多信息: R中的Fill函数