【问题标题】:Set column type for some columns, but not for all readr::read_csv()为某些列设置列类型,但不是为所有的 readr::read_csv()
【发布时间】:2021-07-08 09:52:34
【问题描述】:

我正在阅读一个包含大约 300 个变量的仙女大数据文件。我正在使用 readr:read_csv(),它可以完成 95% 的工作。但是,对于 8 个变量,我得到一个解析错误。这些变量被认为是逻辑的,但它们实际上是字符。现在,我不想手动格式化所有列类型,因为 95% 是正确的。我只想为那些出现解析错误的列设置列类型。我该怎么做?

【问题讨论】:

    标签: r parsing import


    【解决方案1】:

    只需手动设置剩余类型的类型。例如,如果导致解析错误的所有剩余列都应该是逻辑的,则可以使用

    library(dplyr)
    
    df %>%
       mutate(across(c("COLUMNS_TO_CHANGE"), as.logical))
    

    有几种方法可以在across-函数中选择多个列,例如starts_Withends_Withmatches,具体取决于列的命名方式以及这些列是否存在模式选择。

    查看tidyverse-package,尤其是dplyrtidyr 的类似任务。这本书R for Data Science 是一个好的开始。

    【讨论】:

      【解决方案2】:

      您可以使用参数col_types设置特定列的数据类型,例如:

      df <- read_csv(
        "my_file.csv", 
        col_types = cols(
          x = col_character(), # or string abbreviation "c"
          y = col_logical()
        )
      )
      

      xy 是列名。并不是所有其他列都会被自动解析,因此您不需要指定所有列。有关详细信息,请参阅readrdocumentation可用列规范部分)!

      【讨论】:

        【解决方案3】:

        您可以尝试使用 library(data.table) 和 fread 函数吗? 例如data=fread("fantastic_cluster.csv")。使用colClasses = c("date" = "character"),您还可以指定某些列的结构。如果您发布您的数据子集,我可能会更有帮助。

        【讨论】:

          猜你喜欢
          • 2015-10-12
          • 2010-09-20
          • 2011-02-19
          • 1970-01-01
          • 2021-06-12
          • 2018-05-13
          • 1970-01-01
          • 1970-01-01
          • 2021-08-11
          相关资源
          最近更新 更多