我正在處理包含以全部大寫字母輸入的名字的數據集。我需要使用名稱作爲字符變量,而不是因素。使用「NA」作爲合法的不允許的值
數據集中的一個人名爲「NA」。我可以讓R
接受「NA」作爲合法的字符值嗎?我的解決方法是重命名NAA人,但我有興趣查看是否有更好的方法。
我正在處理包含以全部大寫字母輸入的名字的數據集。我需要使用名稱作爲字符變量,而不是因素。使用「NA」作爲合法的不允許的值
數據集中的一個人名爲「NA」。我可以讓R
接受「NA」作爲合法的字符值嗎?我的解決方法是重命名NAA人,但我有興趣查看是否有更好的方法。
由於我的評論的演示,請考慮下面的示例CSV文件:
x <- tempfile()
cat("v1,v2", "NA,1", "AB,3", sep = "\n", file = x)
cat(readLines(x), sep = "\n")
# v1,v2
# NA,1
# AB,3
這裏有一個基本的read.csv
str
。請注意0被視爲NA
str(read.csv(x))
# 'data.frame': 2 obs. of 2 variables:
# $ v1: Factor w/ 1 level "AB": NA 1
# $ v2: int 1 3
現在,指定不同的字符作爲na.strings
參數:
str(read.csv(x, na.strings = ""))
# 'data.frame': 2 obs. of 2 variables:
# $ v1: Factor w/ 2 levels "AB","NA": 2 1
# $ v2: int 1 3
僅供參考'read.csv'現在有一個文本參數:'read.csv(text = c(「v1,v2」,「NA,1 「,」AB,3「))' – hadley
@hadley,我非常瞭解這個文本參數,只是說明好像從實際文件中讀取以複製OP可能經歷的內容。 – A5C1D2H2I1M1N2O1R2T1
你有NA在你的數據集,否則價值?如果不是,只需將'read.table'中的'na.strings'參數改爲別的。 – A5C1D2H2I1M1N2O1R2T1
'「NA」'是R中的字符值,而不是NA值。所以,只要確保您的實際NA值編碼不同,並在導入期間處理此問題。 – Roland
感謝羅蘭和阿南達。在read.table中設置na.strings =「ZZZ」會照顧我的問題。 – JMH