使用 Tidyr、填充函数在 R 中填充缺失值

当变量中没有数据记录时,会出现数据缺失 错误或值。如果处理不当,这将导致数据建模过程中出现严重问题。最重要的是,大多数算法对丢失数据感到不舒服。

在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函数

Published At
Categories with 技术
Tagged with
comments powered by Disqus