【问题标题】:Multiple different data types in one file一个文件中有多种不同的数据类型
【发布时间】:2020-12-05 17:46:43
【问题描述】:

我正在读取一个包含 2000 行和 3000 列的大型数据文件。据我所知,该文件仅包含整数。但是,当我在 R 中使用 fread 时,我会跨列获得以下唯一类:

“逻辑”“整数”“整数64”“数字”

我预计会有“逻辑”,因为有时数据包含 NA。但是为什么单个文件跨列包含多个不同的类?有些列是整数,有些是整数64,有些是数字,这是否正常?

【问题讨论】:

  • 它会根据列值自动选择类型。 logical 可能是因为如果只有 NA 并且默认情况下它是 NA_logical_。另外,检查.Machine$integer.max是否高于它可以被不同地解析
  • @akrun 好吧,这是有道理的。所以我认为这种混合不是问题。
  • fread一起,也加载了int64。所以这可能是一些具有大值的列被转换为 integer64 的原因。但是,您始终可以在指定所需类型的地方使用 colClasses 参数覆盖

标签: r


【解决方案1】:

根据?fread

自动检测所有控件,例如 sep、colClasses 和 nrows。

bit64::integer64, IDate, POSIXct 类型也被检测出来直接读取,无需在转换前读取为字符。

如果列只有NA 元素,则可能出现logical 类型,默认情况下它是NA_logical_,即logical,并且由于我们没有指定colClasses,它会自动检查并转换为不同的类型。如果我们要覆盖,请将 colClasses 指定为按出现顺序为每列的值的向量

【讨论】:

  • 感谢您的帮助。但还有一件事:我读到 numeric 还捕获 R 中的十进制值(除了整数)。我有兴趣查找我的数据表中是否有任何十进制值。如何做到这一点?
  • @EtoAls 你想从一个整数列中找到一个数字列吗?
  • 不,我只是想知道为什么我的数据表有数字列。我认为它应该只有整数和整数64。我担心有些数字是十进制值(它们不应该是)
  • @EtoAls 它可以基于来自 csv 的数据。你能检查原始数据列看看它的格式吗
  • 是的,当我用 Excel 打开文件并检查单元格时,格式只是“默认”。据我所知,这些列只包含整数,有时还包含 NA。
猜你喜欢
  • 2020-12-03
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2014-07-20
  • 2019-10-02
  • 2018-07-03
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多