R - "NA "文本被视为NA

问题描述 投票:3回答:2

我在R中有一个数据框架,包括国家的iso代码。纳米比亚的ISO代码恰好是'NA'。R将'NA'这个文本视为NA。

例如下面的代码给我提供了纳米比亚的行。

test <- subset(country.info,is.na(country.info$iso.code))

我最初认为这可能是一个因素的问题,所以我确保iso代码列是字符。但这并没有帮助。

如何解决这个问题?

r text na
2个回答
6
投票

这可能与你读入数据的方式有关。仅仅因为它是字符,并不意味着你的 "NA" 并非 NA例如:

z <- c("NA",NA,"US")
class(z)
#[1] "character"

你可以通过给我们提供 dput() 的(部分)数据。

当您读取数据时,请尝试更改 na.strings = "NA" (例如,在 read.csv)到其他的东西,看看它是否有效。

例如,用 na.strings = "":

read.table(text="code country
NA  Namibia
GR  Germany
FR  France", stringsAsFactors=FALSE, header=TRUE, na.strings="")
#   code country
# 1   NA Namibia
# 2   GR Germany
# 3   FR  France

确保检查是否使用 "" 并不会导致改变任何其他的东西.否则,你可以使用一个在你的文件中绝对不会出现的字符串,比如 "z_z_z "或类似的东西... 否则,你可以使用一个绝对不会出现在你的文件中的字符串,比如 "z_z_z "或类似的东西。你可以用一个类似于 "z_z_z "这样的字符串来代替 text=.. 和你的文件名。


0
投票

如果Thomas的解决方案不奏效,你可以随时使用 countrycode 包来改变您的国家代码,以减少问题。例如,在你的例子中,从ISO2-character改为ISO3-character。

country.info$iso.code<-countrycode(country.info$iso.code,"iso2c","iso3c", warn=TRUE)

如果 iso2c 惹祸 country.names希望刚果共和国和刚果民主共和国不要把事情搞砸。

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