理解R - is.na和空白""细胞

Jib*_*ril 3 excel r missing-data

我有一个数据集.在许多不同的文件操作之前,许多单元格都是"NA"

在操纵之后,无论出于何种原因,它们都变得纯粹是空洞的.因此,需要明确的是,以前NA在excel中的SAME单元​​现在只显示完全空白.没什么大不了的吧?

那么,当我把数据读入RI时...

 [1] ""                  ""                  "6.4019975396e+17" 
 [4] ""                  ""                  ""                 
 [7] ""                  ""                  "6.40275087015e+17"
[10] "6.4062774821e+17"  ""                  "6.40602341e+17"   
[13] ""                  ""                  "6.40360673735e+17"
[16] "6.40326194081e+17" "6.40326465381e+17" "6.40322363352e+17"
Run Code Online (Sandbox Code Playgroud)

对我来说似乎还不错,除非我跑步

is.na(data_frame $列名)

我搞错了.每一个.我误解了.na是如何工作的?

编辑 - 这有点模糊.当然,我误解了它是如何工作的.你能解释为什么空单元不算作NA单元吗?是否存在可以应用于数据框的快速修复程序,以便为R创建任何"或"为CSV的NA中的空白单元格?

Gre*_*gor 6

你能解释为什么空单元不算作NA单元吗?

我想,简而言之,答案是R NA和空""是不同的.它的原因是它是""一个空白,NA是一个真正缺失的东西 - 你不知道它是什么,它可能是任何东西.

要使用NApost-hoc 替换空白,您可以执行单个列

data$column[data$column == ""] <- NA
Run Code Online (Sandbox Code Playgroud)

为数据框中的所有列执行此操作

data = lapply(data, function(x) {x[x == ""] <- NA})
Run Code Online (Sandbox Code Playgroud)

正如评论中所指出的,解决问题的最佳时机是当你用or或者na.strings参数读取数据时.read.csvread.table

read.csv(file_name, na.strings = c("", "NA"))
Run Code Online (Sandbox Code Playgroud)