我怎样才能确保所有我的.CSV数据在R中导入为NA而不是空白?

时间:2014-04-17 17:45:49

标签: r missing-data

在我的数据集中,我使用了四个评估我试图预测:1 [好]到4 [差]。

我的模型似乎正在使用polr函数使用有序逻辑回归来预测值 - 尽管它给了我“警告消息”In cbind(race, partisanship, sex, age) : number of rows of result is not a multiple of vector length (arg 4) ,因为我可以看到一些单元格被导入为空白而不是NA s。

这是输出的样子:

mydata <- read.csv("~/Desktop/R/mydata.csv")
attach(mydata)    
> y <- as.factor(assessment)
> x <- cbind(race, partisanship, sex, age)
Warning message:
In cbind(race, partisanship, sex, age) :
  number of rows of result is not a multiple of vector length (arg 4)
> 
> olr <- polr(y ~ x, mydata)
> summary(olr)

Re-fitting to get Hessian

Call:
polr(formula = y ~ x, data = mydata)

Coefficients:
                 Value Std. Error t value
xrace          0.49485   0.214426  2.3078
xpartisanship -0.00990   0.002942 -3.3654
xsex          -0.21304   0.299763 -0.7107
xage           0.01486   0.006812  2.1819

Intercepts:
    Value   Std. Error t value
1|2 -1.4763  0.8253    -1.7887
2|3  1.8049  0.8237     2.1913
3|4  2.4739  0.8290     2.9842

Residual Deviance: 667.1306 
AIC: 681.1306 
(1401 observations deleted due to missingness)

我在定义na.strings = ""之前尝试解决添加x[x==""] <- NAx的问题 - 它在摘要输出中看起来更好 - 但我仍然得到错误。

race列由于某种原因将缺少的单元格导入为空格而不是NA,因为当我在R中使用view(mydata)查看.csv文件时-Studio,我在NA列中看到空格而不是race,而所有其他列都有NA个,其中我缺少数据。虽然当我查看输出时,它显示NA s。

例如,在R-Studio中,第7行已经显示了NA的党派关系,但第10行显示了竞选的空白:

> head(x, 10)
      race partisanship age
 [1,]    2         97.4  80
 [2,]    2         96.7  75
 [3,]    3         95.0  70
 [4,]    3         87.7  65
 [5,]    3         85.2  60
 [6,]    3          4.7  50
 [7,]    3           NA  40
 [8,]    3          9.1  30
 [9,]    3          1.1  80
[10,]   NA         10.2  75

有没有人对如何删除此错误有任何想法?还有一种用NA导入所有.csv文件的方法,所以我知道所有内容都排好了吗?

编辑:如果它有所帮助,在做了一些研究之后,看起来缺少值的列显示为空白而不是NA s源于手动编辑数据以在加载之前清理它我要导入的大部分数据都需要先进行一些清理,所以我不知道如何解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

这将成为一长串评论,所以让我把它写进一个答案。

从cbind错误来看,似乎年龄,性别,党派和种族的长度不一样。这是一个严重的错误。这意味着在数据的某个地方,年龄[n],性别[n],党派[n]和种族[n]之间的联系已被打破。

这可能是在一个或多个向量上执行na.omit的结果。当你不知道答案时,NA应该在那里。如果你知道所有年龄,性别,党派和所有参与者的种族,除了参与者12的年龄,你需要一个NA年龄[12],以便一切排队。如果你删除了NA,那么年龄[13]的年龄会在年龄[12]中结束,因此与性[12],党派[12]和种族[12]相匹配,而不是性别[13],党派[13] ]和种族[13]。如果年龄最初,比如42岁,年龄[42]将没有任何价值,R警告你它通过环绕并分配年龄[42] =年龄[1]迫使事情发挥作用。

这有意义吗?

所以你需要首先弄清楚向量是如何变成不同长度的。