【问题标题】:R data.table: how to read correctlyR data.table:如何正确读取
【发布时间】:2020-10-18 09:55:12
【问题描述】:

我有带有数据的 csv 文件:

filename <- "myfile.csv"

看起来像这样:

A,"B","C","D"
1,"2.4","5","6"

我正在使用data.table 库来读取这个文件:

table <- fread(filename, header = F, sep = ",", quote = "", stringsAsFactors = F)

然后我得到:

1: "A      ""B""       ""C""      ""D"""       
2: "1    ""2.4""   ""5""      ""6"""

我不明白为什么我得到这么多",以及如何正确读取我的数据。

附:如果没有quote,我会收到警告:

Found and resolved improper quoting in first 100 rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote="" to avoid this warning.

而数据是:

1: A,""B"       "C"      "D""       
2: 1,""2.4"   "5"      "6""

所以它也不能正常工作 - 我需要 4 列,但我得到 3。

也许我必须使用另一个函数来读取我的数据?

原始数据为here

【问题讨论】:

  • 您不需要quote 参数,也不需要其他参数。
  • @Jaap,编辑了我的问题,很遗憾没有用
  • 你用的是什么版本的data.table?
  • 无法在 data.table 1.13.0 上重现。
  • @user438383,我有1.13.0。也许原始文件有问题?在我的问题中添加了链接。

标签: r dataframe data.table


【解决方案1】:

我不知道所有这些引号是如何出现的,但据我所知,它们是不必要的。然后一个(虽然有点脏)解决方案是在将数据传递给fread()之前删除它们:

fread(text = gsub('"', '', readLines('test_data_01.csv'), fixed = TRUE))

         V1      V2       V3      V4       V5
1: -2. 5935    II 2   0.4984 ST 123E -2.154 4
2:  -0.2888 ST 123E   1.5636 ST 123E   0.1053
3: -0.828 6 ST 123E -0.9 791  HP 129 -0. 4989
4:  -0. 322 ST 123E  -0.3013  HP 129  -0.4032
5:  -0.5588 ST 123E   1.2694  HP 129  0.703 9

【讨论】:

    【解决方案2】:

    您不需要引用参数。

    a = fread('A, "B", "C", "D"
    1, "2.4", "5", "6"', header=F)
    
    > a
       V1  V2 V3 V4
    1:  A   B  C  D
    2:  1 2.4  5  6
    

    这与从文件中读取相同。

    来自 data.table 手册:

    默认情况下 ("""),如果字段以双引号开头,则 fread 如详细信息中所述,稳健地处理嵌入的报价。如果它 失败,然后再次尝试按原样读取该字段,即 如果引号被禁用。

    编辑:使用原始数据;

    a = fread('V1,"V2","V3","V4","V5"
    -2. 5935,"II 2","0.4984","ST 123E","-2.154 4"
    -0.2888,"ST 123E","1.5636","ST 123E","0.1053"
    -0.828 6,"ST 123E","-0.9 791","HP 129","-0. 4989"
    -0. 322,"ST 123E","-0.3013","HP 129","-0.4032"
    -0.5588,"ST 123E","1.2694","HP 129","0.703 9"')
    
    > a
             V1      V2       V3      V4       V5
    1: -2. 5935    II 2   0.4984 ST 123E -2.154 4
    2:  -0.2888 ST 123E   1.5636 ST 123E   0.1053
    3: -0.828 6 ST 123E -0.9 791  HP 129 -0. 4989
    4:  -0. 322 ST 123E  -0.3013  HP 129  -0.4032
    5:  -0.5588 ST 123E   1.2694  HP 129  0.703 9
    

    【讨论】:

    • 我下载了你的原始数据,对我来说效果很好(见编辑)。我不确定是什么原因造成的 - 希望其他人可以提供帮助。
    • 你认为我需要从文件中复制我的数据并添加',或者我可以不复制就做什么?
    猜你喜欢
    • 2022-11-13
    • 2021-12-14
    • 2013-11-16
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多