如何在R中将NA替换为1?
Posted
技术标签:
【中文标题】如何在R中将NA替换为1?【英文标题】:How to replace NA to 1 in R? 【发布时间】:2019-04-15 09:55:28 【问题描述】:我已经尝试过这个网站上其他人的 R 代码来解决类似的问题,但没有一个能解决,所以我很困惑。 我基本上是在尝试替换名为“my_data1”的数据集中名为“Item4”的第 6 列中的所有 NA 值。
以及到目前为止我尝试过的那些 R 代码:
b$a[is.na(b$a)] <- 1
with(b, replace(a, is.na(a), 1))
`df[,3:5][is.na(df[,3:5])] <-0`
df <- na_if(df, 'foo')
x[c("a", "b")][is.na(x[c("a", "b")])] <- 0
tidyr::replace_na(x, list(a=0, b=0))#
但是,它们在我的数据集中都不起作用。这些 NA 值根本不会被代码替换。
如果有人能帮助我解决这个问题,我将不胜感激。
【问题讨论】:
请不要将此问题标记为重复,甚至不要在第一眼就关闭此问题。我承认网站上有重复的问题。但是,正如我所说,我尝试了大多数 R 代码,但它们没有帮助。所以我真的需要得到别人的帮助。 你得到什么错误(如果有的话)? 请显示str(my_data1)
的输出。也许这些不是实际的NA
值,而是字符串"NA"
?此外,在您的代码中,data.frame 有不同的符号:b
、df
和 x
。希望您在尝试代码时将其更改为my_data1
?
【参考方案1】:
这应该有效: - 替换该列中等于 NA 的所有行。如果它不知道变量的类别将有助于排除故障。 sapply(my_data1, 类)
my_data1[ is.na( my_data1$Item4) , "Item4" ] <- 1
在您的屏幕截图中显示为 NA 的值实际上是字符吗?尝试使用 dput 共享数据 - 如果是这样,您将需要:
my_data1[ my_data1$Item4 %in% "NA" , "Item4" ] <- 1
【讨论】:
非常感谢您的建议。第二个 R 代码有效。我没有意识到 NA 是字符串而不是数字。 @JasminZhang - 您可能希望将所有“NA”转换为 NA,然后转换第 6 列。您应该在这里检查您的课程,我希望您的变量是一个因素而不是数字 -如果你正在采取手段等,你会想要转换它。 @JasminZhang 如果这解决了问题不要忘记接受答案 是的,这完全解决了我的问题。但是,我可以通过哪种方式接受答案? @JasminZhang - 查看此链接:***.com/help/someone-answers以上是关于如何在R中将NA替换为1?的主要内容,如果未能解决你的问题,请参考以下文章
在 R 的数据集中将 -inf、NaN 和 NA 值替换为零
R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0具体列的NA值替换(replace)为0若干列的NA值替换(replace)为0