迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 R 中用 0 代替 NA

作者:迹忆客 最近更新:2023/03/21 浏览次数:

在 R 中,有一个简单的方法可以将数据框中的 NA 替换为 0。假设你有一个名为 my_data 的数据框。要将该数据框中所有的 NA 值用零代替,可以执行这条语句。

my_data[is.na(my_data)] <- 0

例如,如果 my_data 有以下内容。

   C1  C2    C3  C4  C5
1   4   3  <NA>   3   7
2   9   8   ABC   5  10
3   1   1   XYZ   3   6
4  NA   4  <NA>   7  10
5   1   2   ZC1  NA   2

当你执行 my_data[is.na(my_data)] <- 0 时,数据框的内容就会变成这样。

   C1  C2    C3  C4  C5
1   4   3     0   3   7
2   9   8   ABC   5  10
3   1   1   XYZ   3   6
4   0   4     0   7  10
5   1   2   ZC1   0   2

在较大的 R 数据框中用零代替 NA

以前的解决方案使用 Base R 子集重分配,当你有相对较小的数据框时,它工作得很好。但对于更大的数据集,你可能需要一个更快的替代方案,比如最近版本的 dplyr 包中实现的新的混合评估方法。

dplyr 包采用的新方法可以识别整个表达式,并使用 C++ 代码来评估它们。这样,在处理大数据框时,你可以实现高达 30%的变换速度。

要使用 dplyr 包将 NA 值替换为零,可以使用 mutate 函数与 _all 范围内的动词和 replace 函数的 purrr 格式,如下例所示。

my_data <- mutate_all(my_data, ~replace(., is.na(.), 0))

使用 purrr 符号允许我们将 replace 函数应用于每个数据框元素。

在 R 数据框的子集中用零替换 NA

mutate 函数中,你可以使用 _at 范围动词来代替 _all 范围动词,将替换操作限制在特定的列上。要做到这一点,你可以包含一个包含列名的向量,这是你希望替换发生的地方。使用前面的数据框,如果你只需要替换列 C1C4 中的 NA 值,你可以使用以下命令。

my_data <- mutate_at(my_data, c(`C1`, `C4`), ~replace(., is.na(.), 0))

这样一来,只有列 C1C4 中的 NA 值被替换为 0,从而得到如下数据框。

   C1  C2    C3  C4  C5
1   4   3  <NA>   3   7
2   9   8   ABC   5  10
3   1   1   XYZ   3   6
4   0   4  <NA>   7  10
5   1   2   ZC1   0   2

在前面的例子中,你可能希望只在数字列中用 0 来替换 NA,以避免在字母数字列(如 C3)中包含 0 值。如果是这种情况,你可以使用 mutate_if 函数和 is.numeric 条件来告诉 R 只在数字列中用零值替换 NA,而不是指定要应用替换的列。在下面的例子中,你可以找到完整的代码来尝试,从安装 dplyr 包、填充数据框到执行替换并显示结果。

install.packages("dplyr")
library(dplyr)
C1 <- c(4, 9, 1, NA, 1)
C2 <- c(3, 8, 1, 4, 2)
C3 <- c(NA, 'ABC', 'XYZ', NA, 'ZC1')
C4 <- c(3, 5, 3, 7, NA)
C5 <- c(7, 10, NA, 10, 2)
my_data <- data.frame(C1, C2, C3, C4, C5)
my_data <- mutate_if(my_data, is.numeric, ~replace(., is.na(.), 0))
my_data

输出:

   C1  C2    C3  C4  C5
1   4   3  <NA>   3   7
2   9   8   ABC   5  10
3   1   1   XYZ   3   0
4   0   4  <NA>   7  10
5   1   2   ZC1   0   2

你可以在 R 文档中找到更多关于 mutate() 函数及其变体的信息。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便