【问题标题】:Importing data in R with read_excel and missing values使用 read_excel 和缺失值在 R 中导入数据
【发布时间】:2020-10-21 17:28:18
【问题描述】:

我目前正在学习如何将 excel 导入数据框。我已经研究过,但到目前为止我无法找到答案。

有代表每个月的数据行可以追溯到 2013 年,其中每月大约有 150 行(按位置)。每个地点,每个月都有数组数据,例如人数,以及一些其他相关的数字和字符数据。随着文件的开发和方法的改变,一些列有空白,但该列的其余部分是数字。例如 Number_of_PPL 是从 2019 年开始记录的,所以之前的值是空白的。

我知道我可以将空白更改为零,但我不希望这与 0 People vs no data 混淆。

使用以下方式导入时:

df <- data.frame(read_excel("UPLOAD_DATA.xlsx", sheet="ALL DATA",na=""))

str(df) 给出:

$ Number_of_PPL : logi NA NA NA NA NA NA ...

带有空格的列被视为逻辑而不是数字。我尝试转换为数字,但是这给了我 0,1 或 NA 值,而不是数据的真实值。我不想省略带有 NA 的行,因为它们包含该位置的其他相关数据。

有没有办法将这些列导入为数字,以便我仍然可以在图表中表示它们并在以后进行计算而无需插入零?

编辑/更新 以下是从 excel 上传的数据的示例:

数字数据与空白的转换发生在 Number_of_PPL 列的第 12,520 行。到目前为止,在使用 Read_xl 时,我发现它会猜测这是逻辑数据。如果我在前一行输入数字,即。第 1 行,read_xl 会将列视为自己的数字。

col_names 的建议可以完美地强制它为数字,但是就效率和未来的数据集而言,我更愿意在假设之前找出是否有办法让 read_xl 在数据中看得更远数据是否符合逻辑?

显然,它能够获取空白行,分配 NA 并仍将其称为数字,但它似乎与数据列中数字出现的位置有某种关系,在这种情况下,它们似乎远远“下降”

【问题讨论】:

  • 参见col_types 参数。 minimal reproducible example 会很有用...
  • 谢谢。 col_types 效果很好,但是我确实需要为所有 32 列设置类型,这很麻烦。我已经更新了我的帖子,以包含我正在尝试使用的数据的更一般示例。这不是一个最小的可复制示例,但我希望它有所帮助。如果数值数据出现在列中较早的位置(即第 1 行),read_xl 将在没有帮助的情况下将数据识别为数值的更多实验结果
  • 尝试增加guess_max的值
  • @BenBolker 谢谢!通过设置guess_max = Inf,这看起来很完美
  • 好的,如果您想在我解决问题之前发布您自己问题的答案,请随意。

标签: r dataframe na readxl


【解决方案1】:

增加guess_max 的值已经解决了这个问题。

df = data.frame(read_excel("UPLOAD_DATA.xlsx", sheet="ALL DATA",na="", guess_max=Inf))

感谢@benbolker

【讨论】:

    猜你喜欢
    • 2013-12-13
    • 2015-10-04
    • 2011-04-15
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多