我在R中有一个数据框,包括国家iso代码.纳米比亚的iso代码恰好是'NA'.R将此文本"NA"视为N/A.
例如,下面的代码给了我与纳米比亚的行.
test <- subset(country.info,is.na(country.info$iso.code))
Run Code Online (Sandbox Code Playgroud)
我最初认为这可能是一个因素问题,所以我确保iso代码列是字符.但这没有帮助.
怎么解决这个问题?
这可能与您如何读取数据有关.仅仅因为它的性格并不意味着你"NA"不是一个NA,例如:
z <- c("NA",NA,"US")
class(z)
#[1] "character"
Run Code Online (Sandbox Code Playgroud)
您可以通过向我们提供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
Run Code Online (Sandbox Code Playgroud)
务必检查使用""不会导致其他任何变化.否则,您可以使用一个绝对不会出现在您的文件中的字符串,如"z_z_z"或类似的东西.您可以text=..用您的文件名替换它.