【问题标题】:Importing text file in r在 r 中导入文本文件
【发布时间】:2016-10-23 14:20:14
【问题描述】:

我有 26MB 的文本文件,其中包含 21 个变量,我尝试将数据导入为:

file<-read.table("file.txt", header=FALSE, sep="\t",skip=10)

由于某种原因,它加载了一个带有一个变量的数据。有什么建议吗?

我的 sessionInfo 看起来像:

sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)

编辑: 以下是部分数据:

8760
201001010100
201001010100
00001    -9.0
00002   18
    201001010100      00002     0.0000        100.0000        250.0000        500.0000        750.0000       1000.0000       1500.0000       2000.0000       3000.0000       4000.0000       5000.0000       6000.0000       7500.0000       8500.0000      10000.0000      12000.0000      15000.0000      18000.0000
    201001010100      00002     86.8757         89.1179         90.9795         97.8640         99.0000         99.0000         99.0000         99.0000         99.0000         98.5143         86.4022         83.7819         63.1753         63.1753         15.9124         15.9124        0.500000        0.500000    
    201001010200      00002     91.2323         93.8417         95.9578         99.0000         99.0000         99.0000         99.0000         99.0000         99.0000         98.9829         88.4616         82.8682         59.4900         59.4900         16.8052         16.8052        0.500000        0.500000    
    201001010300      00002     94.3013         97.2262         99.0000         99.0000         99.0000         99.0000         98.6965         99.0000         99.0000         99.0000         87.7681         85.6374         51.5871         51.5871         19.4833         19.4833        0.500000        0.500000    
    201001010400      00002     95.2143         98.3831         99.0000         99.0000         98.9409         97.9819         99.0000         99.0000         98.6090         89.6825         85.1337         84.1001         47.7453         47.7453         20.1295         20.1295        0.500000        0.500000    
    201001010500      00002     94.9904         98.2644         99.0000         97.4757         94.7400         96.5887         99.0000         99.0000         98.1337         89.6765         88.0377         80.0048         47.3583         47.3583         23.5985         23.5985        0.500000        0.500000    

【问题讨论】:

  • 所有变量都在一个列中,还是第一个变量是唯一加载的?
  • @thepule 所有变量最终都在一个列中。换句话说,宽度是用长度来补偿的。
  • 您确定您的文件是制表符分隔的,并且文件在 10 行后是统一的吗?
  • @Psidom 是的,这样我想知道这正在发生。我也尝试使用工具菜单将其导入 r studio,但最终还是只有一列。
  • 这似乎是您正在阅读的文件的特定内容。如果您使用 Rstudio,您是否尝试过使用 import dataset 功能导入文件?它通常可以很好地确定加载文件的正确过程。相应的代码也显示在控制台中,因此您可以获取它并在将来在您的代码中使用它。

标签: r dataframe import data-import


【解决方案1】:

你似乎有不同的nr。文件中的列数(第 5 行中的 21 与第 5 行以外的行中的 20)。

类似于@thepule 的建议,使用read.table,您可以完全省略sep 参数,而read.table 通常会通过自动执行合理的操作来为您提供良好的结果。在您的情况下,省略第 1-5 行,这将导致 8 行包含 20 个变量:

> f <- read.table('file.txt', header=FALSE, skip=5) 
> str(f)

 data.frame':   8 obs. of  20 variables:
 $ V1 : num  2.01e+11 2.01e+11 2.01e+11 2.01e+11 2.01e+11 ...
 $ V2 : int  2 2 2 2 2 2 2 2
 $ V3 : num  86.9 91.2 94.3 95.2 95 ...
 [...]

设置sep='',跳过列之间的所有空格在您的情况下也可以。

编辑:如果每行有不同数量的列(=元素),您可以考虑在read.table 中设置fill=T。这将用空白字段填充缺失的信息 - 但请确保这是您真正想要做的。

PS:file 将是一个函数,所以我建议为您的变量使用另一个名称。

【讨论】:

  • 我使用了您的解决方案,但收到错误消息:Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : line 8762 did not have 20 elements
  • 这表明您的数据文件没有提供相同数量的每行列(第 6-8761 行都有 20 个元素,但第 8762 行有不同的数量)。您可以考虑设置fill=T,但请确保这确实是您想要做的。
  • 我可以说点什么吗?你的fill=TRUE 工作。谢谢你。你太棒了!
猜你喜欢
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2021-10-08
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多