r - 使用 vroom 读取日期列和所有其他列作为 R 中的两倍

标签 r readr vroom

我有超过 10000 个变量的 csv 文件。我想使用 vroom 读入它们,并希望将第 1 列标识为日期,将第 2 列标识为字符,将第 3 和 4 列标识为整数,将所有其余列标识为 double 。我该怎么做?

我的代码看起来像这样,但是失败了。

data81 <- vroom(fname_1981_2010, col_types = c(Date = col_date(), MonthDay = col_character(), doy = col_integer(), (.) = col_double()))

告诉 vroom 在其余列中读取为 double (替换我代码中的 (.))的语法是什么?谢谢。

最佳答案

可以通过 cols().default 参数来实现:

library(vroom)

set.seed(42)

d <- data.frame(
  date = sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 12),
  MonthDay = sample(LETTERS[1:7], 12, replace = TRUE),
  doy = 1:12,
  col4 = runif(12),
  col5 = runif(12),
  col6 = runif(12)
)

fname_1981_2010 <- "fname_1981_2010.csv"

write.csv(d, fname_1981_2010, row.names = FALSE)

vroom(fname_1981_2010, col_types = cols(date = col_date(), MonthDay = col_character(), 
      doy = col_integer(), .default = col_double()))
#> # A tibble: 12 x 6
#>    date       MonthDay   doy    col4   col5   col6
#>    <date>     <chr>    <int>   <dbl>  <dbl>  <dbl>
#>  1 1999-02-18 D            1 0.514   0.208  0.619 
#>  2 1999-11-17 A            2 0.390   0.907  0.333 
#>  3 1999-06-02 E            3 0.906   0.612  0.347 
#>  4 1999-03-15 F            4 0.447   0.380  0.398 
#>  5 1999-08-16 D            5 0.836   0.436  0.785 
#>  6 1999-05-26 B            6 0.738   0.0374 0.0389
#>  7 1999-05-02 B            7 0.811   0.974  0.749 
#>  8 2000-01-01 G            8 0.388   0.432  0.677 
#>  9 1999-05-08 C            9 0.685   0.958  0.171 
#> 10 1999-10-30 A           10 0.00395 0.888  0.261 
#> 11 1999-01-24 A           11 0.833   0.640  0.514 
#> 12 1999-11-23 C           12 0.00733 0.971  0.676

关于r - 使用 vroom 读取日期列和所有其他列作为 R 中的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68058569/

相关文章:

r - knitr 显示不带科学记数法的整数数字

r - 如何使用 gg密度 叠加总密度和组密度

R Markdown pdf部分彩色单元格背景(数据栏)

r - readr read_csv 是否允许在 zip 中指定特定文件

r:readr:write_csv 如何压缩文件?

r - `read_fwf` 和 `vroom_fwf` 意外地跳过第一行?

r - Vroom/fread 不会读取大 .csv 文件 - 无法内存映射它

r - 有条件地从数据框中删除行