【问题标题】:How to read a table in R with columns separated by unequal spac如何在 R 中读取由不等间距分隔的列的表
【发布时间】:2012-04-19 13:24:48
【问题描述】:

这是数据框的一列。我想进一步分成 4 列。问题是每列之间的空格根据数字而不同。

 -92 -100    0   29   
  ··   ··    0   29  
   0    0    0    0  
  --   --   --   --
 -93   21   ··   ··

第一行 // -92 和 -100 之间有 1 个空格,100 和 0 之间有 4 个空格,0 和 29 之间有 3 个空格。

第二行 第 1 列和第 2 列之间有 3 个空格,第 2 和第 3 列之间有 3 个空格,第 3 和第 4 列之间有 3 个空格

第三行
每列之间有 4 个空格

第四行
每列之间有 3 个空格。

【问题讨论】:

  • read.table() 的默认分隔符是 "",从帮助页面中可以看出“文件每一行的值都由这个字符分隔。如果 sep = ""(读取的默认值.table) 分隔符是“空白”,即一个或多个空格、制表符、换行符或回车。'关键是“一个或多个空格、制表符、...”。这适用于您的应用程序吗?
  • 自从 Hollerith 卡时代以来,我还没有看到过这个问题。无论如何,请提供:您尝试读取的文件的确切类型,以及“列”的含义。您说您想将一列分成 4 列,但随后又横向进入了一组多列数据。

标签: r parsing dataframe


【解决方案1】:

我认为问题的答案(在编辑问题以将数据布局更改为等距字体之后)是read.fwf,它位于“utils”包中,因此它应该可以在不需要加载任何东西的情况下使用。

read.fwf(file=textConnection(" -92 -100    0   29   
   ··   ··    0   29  
    0    0    0    0  
   --   --   --   --
  -93   21   ··   ··"), header=FALSE, widths=c(4,5,4,4))
#------------------
    V1    V2   V3   V4
1  -92  -100      0   
2   ··    ··      0   
3    0     0      0   
4   --    --    - -   
5  -93    21    · ·   

【讨论】:

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