我正在尝试替换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和其他十几个人。
有人可以帮忙吗?
谢谢!
所有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'
注意:存在风险:数据框中的每个变量只能有一种类型(即numeric
,logical
,character
)。将character
值添加到这些变量将导致整个变量转换为character
,这可能会在将来尝试进行正确的数值计算时导致问题。这就是为什么特殊值NA
优于其他值来识别缺失数据的原因。