如何用readxlselect特定的列和types?

我正在尝试解决使用readxl包将xls数据导入到R中的问题。 特定的xls文件有18列和472行,前7行有描述文本,需要跳过。 我只想在EDA的18列中selectcol 1,3,6:9 。 他们有混合types,包括date,数字和文字。

readxl似乎不能直接导入非连续的列。 我的计划是使用skip = 7先读取整个表格,然后使用select next step。 但是,问题是readxl默认的datetypes为数字。 有没有在readxl中按列名指定col_types的方法

带有示例xlsx的可重现代码,用于围绕代码展开工作。

library(readxl) xlsx_example <- readxl_example("datasets.xlsx") # read the entire table read_excel(xlsx_example) # select specific column to name - following code does not work read_excel(xlsx_example, col_types=col (Sepal.Length = "numeric")) 

据我所知,你col_types列名指定col_types 。 尽pipe只能阅读特定的列。 例如,

read_excel(xlsx_example, col_types=c("numeric", "skip", "numeric", "numeric", "skip"))

将导入第1,3和4列,并跳过第2和第5列。您可以对18列进行此操作,但是我觉得这样会难于跟踪哪一列被导入为哪一种types。

另一种方法是使用col_types = "text"作为文本读入所有列,然后按名称select并转换variables。 例如:

 library(tidyverse) library(readxl) xlsx_example <- readxl_example("datasets.xlsx") df <- read_excel(xlsx_example, col_types = "text") df %>% select(Sepal.Length, Petal.Length) %>% mutate(Sepal.Length = as.numeric(Sepal.Length)) #> # A tibble: 150 x 2 #> Sepal.Length Petal.Length #> <dbl> <chr> #> 1 5.1 1.4 #> 2 4.9 1.4 #> 3 4.7 1.3 #> 4 4.6 1.5 #> 5 5.0 1.4 #> 6 5.4 1.7 #> 7 4.6 1.4 #> 8 5.0 1.5 #> 9 4.4 1.4 #> 10 4.9 1.5 #> # ... with 140 more rows 

所以我认为你可以这样做:

read_excel(xlsx_example,col_types = col(Sepal.Length = col_numeric()))

有史以来第一次发布如此抱歉可怕的格式,将有时间修复。