【问题标题】:How to read file with irregularly nested quotations?如何读取不规则嵌套引用的文件?
【发布时间】:2021-12-10 01:26:40
【问题描述】:

我有一个包含不规则引号的文件,如下所示:

"INDICATOR,""CTY_CODE"",""MGN_CODE"",""EVENT_NR"",""EVENT_NR_CR"",""START_DATE"",""PEAK_DATE"",""END_DATE"",""MAX_EXT_ON"",""DURATION"",""SEVERITY"",""INTENSITY"",""AVERAGE_AREA"",""WIDEST_AREA_PERC"",""SCORE"",""GRP_ID"""
"Spi-3,""AFG"","""",1,1,""1952-10-01"",""1952-11-01"",""1953-06-01"",""1952-11-01"",9,6.98,0.78,19.75,44.09,5,1"

这似乎是不规则的,因为第一列只用单引号括起来,而随后的每一列都用双引号括起来。我想阅读它,以便每列都在不带引号的情况下导入(既不在标题中,也不在数据中)。

我尝试过的如下:

# All sorts of tidyverse imports
tib <- readr::read_csv("file.csv")

我也尝试了here提供的建议:

# Base R import
DF0 <- read.table("file.csv", as.is = TRUE)
DF <- read.csv(text = DF0[[1]])

# Data table import
DT0 <- fread("file.csv", header =F)
DT <- fread(paste(DT0[[1]], collapse = "\n"))

但即使是在后两种情况下导入文件,变量名和部分元素也会用引号引起来。

【问题讨论】:

    标签: r csv


    【解决方案1】:

    我使用 data.table::fread 和 quote="" 选项(即“原样”)。
    然后我通过删除所有引号来清理名称和数据。
    日期也可以转换,但我没有这样做。

    library(data.table)
    library(magrittr)
    DT0 <- fread('file.csv', quote = "")
    DT0 %>% setnames(names(.), gsub('"', '', names(.)))
    string_cols <- which(sapply(DT0, class) == 'character')
    DT0[, (string_cols) := lapply(.SD, function(x) gsub('\\"', '', x)), 
        .SDcols = string_cols]
    
    str(DT0)
    
    Classes ‘data.table’ and 'data.frame':  1 obs. of  16 variables:
     $ INDICATOR       : chr "Spi-3"
     $ CTY_CODE        : chr "AFG"
     $ MGN_CODE        : chr ""
     $ EVENT_NR        : int 1
     $ EVENT_NR_CR     : int 1
     $ START_DATE      : chr "1952-10-01"
     $ PEAK_DATE       : chr "1952-11-01"
     $ END_DATE        : chr "1953-06-01"
     $ MAX_EXT_ON      : chr "1952-11-01"
     $ DURATION        : int 9
     $ SEVERITY        : num 6.98
     $ INTENSITY       : num 0.78
     $ AVERAGE_AREA    : num 19.8
     $ WIDEST_AREA_PERC: num 44.1
     $ SCORE           : int 5
     $ GRP_ID          : chr "1"
     - attr(*, ".internal.selfref")=<externalptr> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多