【问题标题】:read an ASCII text file读取 ASCII 文本文件
【发布时间】:2020-05-07 23:22:12
【问题描述】:

如何正确读取这个 ASCII 文本文件?

我可以在这里下载 zip 文件:https://www.irs.gov/pub/irs-soi/eo2016.zip 当我从 zip 文件中打开它时,将“.txt”添加到文件名中,然后在 Excel 中打开它 - 显示了许多没有任何意义的数字(附截图)。enter image description here 我也在 MatLab 和 RStudio 中打开过,但是这些数字也会显示出来。

有人知道如何正确执行此操作吗?

【问题讨论】:

  • eo2016 由 22856 行组成,每行 9444 个字符长。我猜这是一个固定宽度的文件。国税局可能会告诉您有关格式的更多信息。您对文件有什么编程相关问题?
  • 你对线条和字符是正确的。我的问题是,如何在 Excel 中读取该文件。 IRS 还提供了一个解释文件数据的 Excel:irs.gov/pub/irs-soi/eo2016_derl.xlsx 我当前的尝试总是返回无意义的数字,如问题的屏幕截图所示。美国国税局说,需要一个统计软件包来读取文件,但是,使用 R 或 SPSS 我也会收到无意义的数字。

标签: zip ascii


【解决方案1】:

如果它是一个文本文档,为什么不在文本编辑器中打开它呢?

【讨论】:

  • 这不是答案。不管你是否有评论的声誉。
【解决方案2】:

如 cmets 中所述,该文件为固定宽度格式(行长:9444),列位置已在 a separate Excel sheet 中指定。

以下是在 Excel 中导入此类文件的 3 种可能性。

1。 Excel 的“将文本转换为列”向导

在 Excel 功能区的“数据”选项卡中有一个“文本到列”按钮。 它支持固定宽度的文件,但手动放置 833 列分隔符将是一项极其繁琐的工作。 而且似乎没有办法为后续导入保存列定义。

2。使用 Excel 公式

从规格表 (EO990_16) 中,复制列 C 和 D,并将它们粘贴到另一个 Excel 表中,转置;使用选择性粘贴 - 转置。这应该填充第 1 行和第 2 行,如下所示:

 1    13    22    26    27   102   162   ...
12     9     4     1    75    60     2   ...

现在从第 3 行开始用引用数据表的公式填充工作表的其余部分,如下所示。 这是水平和垂直任何单个单元格的直接复制。

=MID(Data!$A3, A$1, A$2)    =MID(Data!$A3, B$1, B$2)    =MID(Data!$A3, C$1, C$2)    ...
=MID(Data!$A4, A$1, A$2)    =MID(Data!$A4, B$1, B$2)    =MID(Data!$A4, C$1, C$2)    ...
=MID(Data!$A5, A$1, A$2)    =MID(Data!$A5, B$1, B$2)    =MID(Data!$A5, C$1, C$2)    ...
...                         ...                         ...

来源:
https://www.wizardofexcel.com/2011/09/28/saving-a-fixed-width-import-layout/

3。转换为 CSV

CSV 易于导入。 这种命令行方法可能会有所帮助:
convert a fixed width file from text to csv

【讨论】:

  • 嗨,路德,谢谢!这就是解决方案!我实际上几乎完全一样。所以,IRS 提出的“统计软件包”不是必需的,Excel 做到了。
  • @Georg 我很好奇,您使用了哪些选项?了解哪些人在实践中实际工作可能对其他人有用。如果您觉得我的回答有用,请随时accept它。
【解决方案3】:

作为一个解决方案,我使用了 Excel,只是根据解释 Excel 中描述的每个单元格的长度,用公式将数据分开。

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 2012-05-09
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多