我正在尝试替换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和其他十几本书。
有人可以帮忙吗?
谢谢!
答案 0 :(得分: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'
当心::这样做有风险:数据框中的每个变量只能具有一种类型(即numeric
,logical
,character
)。在这些变量中添加character
值将导致整个变量转换为character
,这在将来尝试进行数值计算时可能会引起问题。这就是为什么在识别丢失的数据时,优先使用特殊值NA
而不是其他值的原因。