gpt4 book ai didi

r - 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

转载 作者:行者123 更新时间:2023-12-03 08:47:33 25 4
gpt4 key购买 nike

我正在尝试使用 R 中的 readr::read_csv 读取 csv 文件。我导入的 csv 文件有大约 150 列,我只包括示例的前几列。我希望将第二列从默认类型(我执行 read_csv 时的日期)覆盖为字符或其他日期格式。

GIS Join Match Code Data File Year  State Name  State Code  County Name County   Code   Area Name   Persons: Total
G0100010 2008-2012 Alabama 1 Autauga County 1 Autauga County, Alabama 54590

df <- data.frame("GIS Join Match Code"="G0100010", "Data File" = "2008-2012", "State" = "Alabama", "County" = "Autauga County", "Population" = 54590)

问题是,当我使用 readr::read_csv 时,似乎我可能必须在覆盖 col_types 时使用所有变量(请参阅下面的错误)。这需要单独指定覆盖所有 150 列(?)。问题是:有没有办法指定覆盖特定列的 col_type 或命名的对象列表?就我而言,它只是覆盖“数据文件年份”列。

我知道任何省略的列都会被自动解析,这对我的分析来说很好。我认为它变得更加复杂,因为我下载的文件中的列名中有一个空格(例如,“数据文件年份”、“州代码”)等。
tempdata <- read_csv(df, col_types = "cc")
Error: You have 135 column names, but 2 columns

如果可能的话,我想另一个选项是跳过一起阅读第二列?

最佳答案

如果将来有人碰巧遇到这个问题,下面是对这个问题的更通用的答案。不建议使用“skip”跳转列,因为如果更改导入的数据源结构,这将无法工作。

在您的示例中,简单地设置默认列类型,然后定义与默认值不同的任何列可能会更容易。

例如,如果所有列通常都是“d”,但日期列应该是“D”,则按如下方式加载数据:

  read_csv(df, col_types = cols(.default = "d", date = "D"))

或者,例如,如果日期列应为“D”,而“xxx”列应为“i”,请执行以下操作:
  read_csv(df, col_types = cols(.default = "d", date = "D", xxx = "i"))

如果您有多个列并且只有特定的异常(exception)(例如“日期”和“xxx”),则使用上面的“默认值”非常有用。

关于r - 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com