【问题标题】:Why is fread not accepting the skip command?为什么 fread 不接受 skip 命令?
【发布时间】:2017-06-16 19:18:35
【问题描述】:

我有一个 .txt 数据集,其中前 12 行是文本,后跟 2 个空白行,然后是数据

DATE           HEIGHT    INPUT     OUTPUT  TESTMEASURE
01/01/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/02/1933  NO RECORD   NO RECORD   MISSING     MISSING

但是当我做一个

dat <- fread('data.txt'),

它跳过 15 行,并使用第一行数据作为导入数据集的列名。它会忽略标题行。

01/01/1933  NO RECORD   NO RECORD   MISSING     MISSING

skip 参数根本不影响我导入的内容。如何提及需要用作列名的行号。或者,我可以重命名列名,但不应忽略第一行数据。

诊断

Input contains no \n. Taking this to be a filename to open
File opened, filesize is 0.001319 GB.
Memory mapping ... ok
Detected eol as \r\n (CRLF) in that order, the Windows standard.
Positioned on line 1 after skip or autostart
This line is the autostart and not blank so searching up for the last non-blank ... line 1
Detecting sep ... '\t'
Detected 5 columns. Longest stretch was from line 15 to line 30
Starting data input on line 15 (either column names or first row of data). First 10 characters: 01/01/1933
The line before starting line 15 is non-empty and will be ignored (it has too few or too many items to be column names or data): DATE           HEIGHT    INPUT    OUTPUT  TESTMEASURE the fields on line 15 are character fields. Treating as the column names.

【问题讨论】:

  • 应该是dat &lt;- fread('data.txt', skip=15)
  • @ChiPak 我需要跳过 12+2=14 行。但任何低于 15 的数据都不会受到影响。
  • 无论我跳过什么,导入的第一行仍然是 01/02/1933。
  • 我正在处理你的帖子,上面写着dat &lt;- fread('data.txt'),。也就是说,这是您正在使用的命令吗?
  • 也许它正在查看您的数据并说,“嘿,每行有 7 个变量”(将 NO 和 RECORD 分开,因为它怎么会知道不这样做?)因此忽略任何具有更少的行价值观。您可能可以更好地了解 fread(bah, verbose=TRUE) 的作用。

标签: r data.table fread


【解决方案1】:

您有 12 行文本、2 行空格,然后是您的数据。但我注意到DATEHEIGHT 之间有多余的空格。因此,制作一个像这样的文本文件,其中您的数据以制表符分隔,并在 DATEHEIGHT 之间添加 2 个制表符,而不是 1 个制表符

garbage
garbage
garbage
garbage
garbage
garbage
garbage
garbage
garbage
garbage
garbage
garbage


DATE        HEIGHT  INPUT   OUTPUT  TESTMEASURE
01/01/1933  NO RECORD   NO RECORD   MISSING MISSING
01/02/1933  NO RECORD   NO RECORD   MISSING MISSING

fread(data)给了我:

fread(data)
   01/01/1933 NO RECORD NO RECORD MISSING MISSING
1: 01/02/1933 NO RECORD NO RECORD MISSING MISSING

删除DATEHEIGHT 之间的额外标签给了我:

         DATE    HEIGHT     INPUT  OUTPUT TESTMEASURE
1: 01/01/1933 NO RECORD NO RECORD MISSING     MISSING
2: 01/02/1933 NO RECORD NO RECORD MISSING     MISSING

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多