【问题标题】:read fully quoted .csv file with R data.table fread使用 R data.table fread 读取完全引用的 .csv 文件
【发布时间】:2017-01-17 10:23:54
【问题描述】:

我正在尝试读取一个看起来像这样的 .csv 文件,每个单元格中都有引号:
"a","b"
"1","你好"
"2","你好,测试"

使用 read.csv() 它适用于整数类型的列“a”。但是,对于 data.table::fread() 列,“a”是字符类型。

x <- fread("\"a\",\"b\"\n\"1\",\"hello\"\n\"2\",\"hello, test\"")
summary(x)  

    a                  b            
Length:2           Length:2          
Class :character   Class :character  
Mode  :character   Mode  :character 

有没有办法告诉 fread 确定完全引用的 .csv 文件中的列类型?

【问题讨论】:

  • 您可以使用colClasses-参数指定列类。见?fread
  • 要通过 colClasses 参数指定类型,我需要提前知道它们,但我不知道。上面的小例子只是为了说明格式的样子。我的实际输入文件有数百列。
  • 您可以使用x[, names(x) := lapply(.SD, type.convert)]进行事后转换。也许应该添加该步骤作为 fread 的选项...
  • 确实如此,as.is = TRUE。谢谢!
  • 将调查:#1487

标签: r csv data.table fread


【解决方案1】:
x <- fread("\"a\",\"b\"\n\"1\",\"hello\"\n\"2\",\"hello, test\"")
x[, names(x) := lapply(.SD, type.convert, as.is = TRUE)]
summary(x)

    a             b            
Min.   :1.00   Length:2          
1st Qu.:1.25   Class :character  
Median :1.50   Mode  :character  
Mean   :1.50                     
3rd Qu.:1.75                     
Max.   :2.00                     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2018-02-11
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多