如何在不删除名为“ NA”的值的情况下摆脱NA

时间:2019-10-23 08:08:34

标签: r na

我正在处理一个列为ISO国家(地区)代码(例如US,GB,DE等)的数据集。这些代码之一是NA,即纳米比亚。

编写CSV时

write.csv2(df_FINAL, "Final_Merge.csv", col.names =TRUE, row.names = FALSE, na ="")

“国家代码”列中纳米比亚的单元格将打印为空白。

是否有办法拥有na=""并从流程中排除一列,以便避免擦除纳米比亚的价值观?

我无法更改国家/地区代码,因为它必须在许多数据帧上保持一致。

添加了评论:我检查了脚本,似乎问题是R在导入数据框时如何读取值。基本上,R将纳米比亚单元读取为“不可用”单元。之后,无论如何,它们将保持为“不可用”。解决方案:使用read.csv2时,请按照答案中的建议添加na.strings=""

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您的问题是将实际的字符串“ NA”读取为NA值,则read.csv2函数具有参数na.strings,其默认值为"NA"。应该将其更改为其他内容,甚至可以更改为""。我还看到在某些情况下使用"<NA>"

答案 1 :(得分:1)

在编写之前,您可以先在R脚本中用空字符串替换NA值。然后,按原样致电write.csv

df_FINAL <- data.frame(iso <- c("US", "GB", "DE", "NA", NA), stringsAsFactors=FALSE)
df_FINAL$iso[is.na(df_FINAL$iso)] <- ""
write.csv2(df_FINAL, "Final_Merge.csv", col.names =TRUE, row.names = FALSE, na ="")

如果您在读取包含原始码NA的纳米比亚ISO国家/地区代码的源文件时遇到问题,请将na.strings设置为默认值{{1 }}值:

NA