r 箭头将所有列的列 type/schema 设置为 char
r arrow set column type/schema to char for all columns
{arrow} 对列类型的自动检测在打开大型 csv 文件时给我带来了一些麻烦。特别是,它会丢弃一些标识符的前导零并做一些其他不幸的事情。由于数据集非常宽(几百列)并且我不想手动设置所有模式值,我想以某种方式以编程方式设置它。
一个好的开始是在使用 arrow::open_dataset
打开数据集时将 所有 列转换为字符。或者更正特定列的现有 datase_connection$schema
对象。
但是,我无法找到如何这样做。
当您使用 arrow::open_dataset()
时,您可以手动定义一个模式来确定列名和类型。我在下面粘贴了一个示例,它首先显示了 auto-detecting 列名称类型的默认行为,然后使用模式来覆盖它并指定您自己的列名称和类型。此处的示例按要求以编程方式执行此操作,但您也可以手动定义架构。
library(arrow)
write_dataset(mtcars, "mtcars")
# opens the dataset with column detection
dataset <- open_dataset("mtcars")
dataset
#> FileSystemDataset with 1 Parquet file
#> mpg: double
#> cyl: double
#> disp: double
#> hp: double
#> drat: double
#> wt: double
#> qsec: double
#> vs: double
#> am: double
#> gear: double
#> carb: double
#>
#> See $metadata for additional Schema metadata
# define new schema automatically
chosen_schema <- schema(
purrr::map(names(dataset), ~Field$create(name = .x, type = string()))
)
# now opens the dataset with the chosen schema
open_dataset("mtcars", schema = chosen_schema)
#> FileSystemDataset with 1 Parquet file
#> mpg: string
#> cyl: string
#> disp: string
#> hp: string
#> drat: string
#> wt: string
#> qsec: string
#> vs: string
#> am: string
#> gear: string
#> carb: string
{arrow} 对列类型的自动检测在打开大型 csv 文件时给我带来了一些麻烦。特别是,它会丢弃一些标识符的前导零并做一些其他不幸的事情。由于数据集非常宽(几百列)并且我不想手动设置所有模式值,我想以某种方式以编程方式设置它。
一个好的开始是在使用 arrow::open_dataset
打开数据集时将 所有 列转换为字符。或者更正特定列的现有 datase_connection$schema
对象。
但是,我无法找到如何这样做。
当您使用 arrow::open_dataset()
时,您可以手动定义一个模式来确定列名和类型。我在下面粘贴了一个示例,它首先显示了 auto-detecting 列名称类型的默认行为,然后使用模式来覆盖它并指定您自己的列名称和类型。此处的示例按要求以编程方式执行此操作,但您也可以手动定义架构。
library(arrow)
write_dataset(mtcars, "mtcars")
# opens the dataset with column detection
dataset <- open_dataset("mtcars")
dataset
#> FileSystemDataset with 1 Parquet file
#> mpg: double
#> cyl: double
#> disp: double
#> hp: double
#> drat: double
#> wt: double
#> qsec: double
#> vs: double
#> am: double
#> gear: double
#> carb: double
#>
#> See $metadata for additional Schema metadata
# define new schema automatically
chosen_schema <- schema(
purrr::map(names(dataset), ~Field$create(name = .x, type = string()))
)
# now opens the dataset with the chosen schema
open_dataset("mtcars", schema = chosen_schema)
#> FileSystemDataset with 1 Parquet file
#> mpg: string
#> cyl: string
#> disp: string
#> hp: string
#> drat: string
#> wt: string
#> qsec: string
#> vs: string
#> am: string
#> gear: string
#> carb: string