【发布时间】:2014-11-06 09:09:12
【问题描述】:
我有一个数据框,其中包含带有NAs 和"" 的损坏行。我无法从要导入 R 的 .csv 文件中删除它,因为 Excel 无法处理(打开).csv 文档的大小。
我在第一次使用read.csv() 时进行检查,如下所示以删除带有NA 的行:
if ( any( is.na(unique(data$A)) ) ){
print("WARNING: data has a corrupt row in it!")
data <- data[ !is.na(data$A) , ]
}
但是,就像factor 一样,A 列将NA 记住为一个级别:
> summary(data$A)
Mode FALSE TRUE NA's
logical 185692 36978 0
当我尝试拟合线性模型时,这显然会导致问题。我怎样才能在这里摆脱 NA 作为逻辑级别?
我试过了,但似乎没有用:
A <- as.logical(droplevels(factor(data_combine$A)))
summary(A)
Mode FALSE TRUE NA's
logical 185692 36978 0
unique(A)
[1] FALSE TRUE
【问题讨论】:
-
嗯,如果我运行
x <- factor(c(LETTERS[1:3], NA),即使在运行levels(x) <- c(levels(x), NA)之后,x 的因子水平也不包括 NA -
summary(data$A)似乎表明data$A实际上是logical而不是factor。检查summary(c(T,F))和summary(factor(c(T,F)))。 -
@beginneR - 你可以用
factor(NA, exclude=NULL)添加NA作为一个级别 -
看起来 NA 总是出现在逻辑向量摘要中。试试
summary(c(logical(4), !logical(2))) -
@Richard Scriven,是的,我刚才确实注意到了这一点。所以这里可能没有
level相关的问题(由NA介绍)。
标签: r logical-operators na