【问题标题】:NA Values Appear for All Data in Imported .csv File导入的 .csv 文件中的所有数据均显示 NA 值
【发布时间】:2021-01-21 16:41:45
【问题描述】:

我将一组数据导入 RStudio,其中包含 85 个变量和 139 个观察值。所有值都是整数,除了最后一列是空白的,并且由于某种原因与我从 .xls 文件创建的 .csv 文件中的所有其他内容一起导入。

因此,最后一列都是NA 值。问题是,当我尝试运行任何类型的分析时,它似乎正在读取 all 值是 NA 值。尽管如此,在 RStudio 的数据窗口中,一切似乎都很好。这个问题有没有不涉及数据的解决方案?几乎可以肯定是数据有问题吗?

在其他任何地方打开文件甚至在 R 中查看它时似乎很奇怪

【问题讨论】:

  • 试试sapply(strsplit(readLines("your.csv"), ","), length),如果它们不完全相等,则在不相等的行中有一个杂散的逗号。
  • 运行分析时,是否排除了 NA 列?在进行任何分析之前将列从数据框中删除可能会对您有所帮助。
  • @Richard 我刚刚测试过,他们确实都一样。不过,这是一个很方便的技巧,谢谢。
  • @Bernardo 我尝试在有和没有问题列的情况下运行它。

标签: r na


【解决方案1】:

最可能的问题是文件被导入为所有文本而不是数字数据。如果所有数据都是数字,您可以使用colClasses="numeric" 作为read.csv() 函数的参数,并且应该正确导入。您也可以更改 R 中的数据类,或者如果您的文件中有各种不同的数据类型(逻辑、字符、数字等),则给 colClasses 一个不同类的向量。

编辑 看到colClasses 不起作用(如果不查看您的数据很难说出原因),您可以试试这个:

MyDF<-data.frame(sapply(MyDF,FUN=as.numeric))

MyDF 是您的数据框。这会将您的所有列更改为数字。如果您有一些字符/因素/逻辑值,这可能无法按预期工作。您可能需要检查您的 excel 文件/csv 以了解它为什么要导入 NA 列。可能是有一个带有空间的单元被拉入,这正在扔掉东西。您可以随时尝试删除该空列并重试导入。

【讨论】:

  • 不幸的是没有运气。我尝试了`A
  • 如果您在 data.frame 的某一列上使用class() 命令,它会验证它是数字吗?
  • 谢谢,到目前为止我测试过的所有内容都以“字符”的形式返回 - 这将是未来非常有用的测试。关于为什么 colClasses="numeric" 解决方案可能不起作用的任何想法?
【解决方案2】:

如果您想在读取数据本身时省略最后一列,可以尝试以下代码。在此示例中,我假设您的文件有 5 列,第 5 列有 NA 值。因此,您想跳过阅读数据集中的第 5 列。

data <- read.csv (fileName, ....) [,1:4]

或者,如果你想使用列名,你可以使用:

data <- read.csv (fileName, ....) [,c('col1','col2','col3','col4')]

这将读取数据集中选定列的所有观察结果。

希望这会有所帮助。

【讨论】:

  • 其实这还是读取了所有的列。子集发生在读取之后。
  • 是的,但是由于它从“数据”对象中省略,因此对于任何进一步的数据分析都将丢失该列。
【解决方案3】:

如果您也想找到可以使用的均值和标准差

Data<- mean( dataframe$colname , na.rm = TRUE) 
Data1<- sd( dataframe$colname , na.rm = TRUE) 

这将在省略列中的 na 值后给你答案

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 2020-10-01
    • 1970-01-01
    • 2014-01-24
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多