R:将因素变量中的<na>替换为0 [英] R: replacing <NA> within factor variables as 0

查看:15
本文介绍了R:将因素变量中的<na>替换为0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用R编程语言。我有一个既包含字符变量又包含数字变量的数据集--我正在尝试用&0&q;替换该数据中的所有NA和空值。对于连续变量,NA/Empty值应替换为数字0。对于系数变量,NA/Empty值应替换为系数0。

过去,我使用一个标准命令将所有NA替换为0(在下面的代码中,";df";表示包含数据的数据框):

df[df == NA] <- 0

我在我的数据上尝试了上述代码,但我仍然注意到,在因子变量中,此代码不能将<NA>值替换为0。<NA>%s仍然存在。

我尝试了几种方法:

第一种方法:

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

但这不起作用:

Warning message: 
In '[<-.factor'('*tmp*',thisvar, value = 0):
invalid factor level, NA generated

第二种方法:我尝试了其中一个因素变量

library(car)
df$some_factor_var <- recode(df$some_factor_var, "NA = 0")

但这会将";ome_factorvar";中的所有值替换为0

第三种方法:我再次尝试其中一个因素变量

library(forcats)
fct_explicit_na(df$some_factor_var,0)

Error: Can't convert a double vector to a character vector

有人能告诉我如何解决这个问题吗?是否有办法一次替换所有变量的所有空/缺失/NA值?

谢谢

推荐答案

对于因素变量,您需要首先在数据中包括新级别(0)(如果它还不存在)。

请参阅此示例-

df <- data.frame(a = factor(c(1, NA, 2, 5)), b = 1:4, 
                 c = c('a', 'b', 'c', NA), d = c(1, 2, NA, 1))

#Include 0 in the levels for "a" variable
levels(df$a) <- c(levels(df$a), 0)
#Replace NA to 0
df[is.na(df)] <- 0
df
#  a b c d
#1 1 1 a 1
#2 0 2 b 2
#3 2 3 c 0
#4 5 4 0 1

str(df)
#'data.frame':  4 obs. of  4 variables:
# $ a: Factor w/ 4 levels "1","2","5","0": 1 4 2 3
# $ b: int  1 2 3 4
# $ c: chr  "a" "b" "c" "0"
# $ d: num  1 2 0 1

这篇关于R:将因素变量中的&lt;na&gt;替换为0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆