【发布时间】:2021-07-08 09:52:34
【问题描述】:
我正在阅读一个包含大约 300 个变量的仙女大数据文件。我正在使用 readr:read_csv(),它可以完成 95% 的工作。但是,对于 8 个变量,我得到一个解析错误。这些变量被认为是逻辑的,但它们实际上是字符。现在,我不想手动格式化所有列类型,因为 95% 是正确的。我只想为那些出现解析错误的列设置列类型。我该怎么做?
【问题讨论】:
我正在阅读一个包含大约 300 个变量的仙女大数据文件。我正在使用 readr:read_csv(),它可以完成 95% 的工作。但是,对于 8 个变量,我得到一个解析错误。这些变量被认为是逻辑的,但它们实际上是字符。现在,我不想手动格式化所有列类型,因为 95% 是正确的。我只想为那些出现解析错误的列设置列类型。我该怎么做?
【问题讨论】:
只需手动设置剩余类型的类型。例如,如果导致解析错误的所有剩余列都应该是逻辑的,则可以使用
library(dplyr)
df %>%
mutate(across(c("COLUMNS_TO_CHANGE"), as.logical))
有几种方法可以在across-函数中选择多个列,例如starts_With、ends_With、matches,具体取决于列的命名方式以及这些列是否存在模式选择。
查看tidyverse-package,尤其是dplyr 和tidyr 的类似任务。这本书R for Data Science 是一个好的开始。
【讨论】:
您可以使用参数col_types设置特定列的数据类型,例如:
df <- read_csv(
"my_file.csv",
col_types = cols(
x = col_character(), # or string abbreviation "c"
y = col_logical()
)
)
x 和 y 是列名。并不是所有其他列都会被自动解析,因此您不需要指定所有列。有关详细信息,请参阅readrdocumentation(可用列规范部分)!
【讨论】:
您可以尝试使用 library(data.table) 和 fread 函数吗?
例如data=fread("fantastic_cluster.csv")。使用colClasses = c("date" = "character"),您还可以指定某些列的结构。如果您发布您的数据子集,我可能会更有帮助。
【讨论】: