将NA替换为未知

问题描述 投票:0回答:1

我正在尝试替换NA's数据帧的GENDER_M列的objeto1

以下任何内容均无效:

replace_na(objeto1$GENDER_M, "unknown")

mutate(GENDER_M = replace_na(GENDER_M, "unknown"))

mutate(objeto1, GENDER_M = ifelse(is.na(GENDER_M), "unknown", GENDER_M))

replace(is.na(GENDER_M), "unknown")

是的,我读过this page和其他十几个人。

有人可以帮忙吗?

谢谢!

r dplyr
1个回答
3
投票

所有tidyverse函数都返回修改后的数据框,它们不会在适当的位置修改它,因此您需要在返回时分配该值。如果我们做一个示例数据帧:

df <- structure(list(mpg = c(21, 21, 22.8, 21.4, NA, NA), cyl = c(6, 
6, 4, 6, 8, 6)), class = "data.frame", row.names = c(NA, -6L))

   mpg cyl
1 21.0   6
2 21.0   6
3 22.8   4
4 21.4   6
5   NA   8
6   NA   6

我们可以通过以下几种方式替换NA:

df <- df %>%
    replace_na(list(mpg = 'unknown'))

df <- df %>%
    mutate(mpg = ifelse(is.na(mpg), 'unknown', mpg))

两者都返回相同的东西:

df
      mpg cyl
1      21   6
2      21   6
3    22.8   4
4    21.4   6
5 unknown   8
6 unknown   6

您也可以使用基数R:

df[is.na(df)] <- 'unknown'

注意:存在风险:数据框中的每个变量只能有一种类型(即numericlogicalcharacter)。将character值添加到这些变量将导致整个变量转换为character,这可能会在将来尝试进行正确的数值计算时导致问题。这就是为什么特殊值NA优于其他值来识别缺失数据的原因。

© www.soinside.com 2019 - 2024. All rights reserved.