R 已读取\u csv2()猜测日期类型

R 已读取\u csv2()猜测日期类型,r,R,我尝试从readr包中使用read\u csv2()导入一个.csv文件,该文件包含一个或多个只包含日期的列。我原以为read\u csv2()会猜测这些列包含日期,但我得到col\u character()作为列规范 我无法预先指定哪一列应该是日期类型,因为我正在导入许多表,这些表的名称列在配置表中(我使用循环导入该配置表中列出的每个表)。因此,我的问题是:有没有办法让读取\u csv2()正确猜测日期类型 我试着用不同的日期格式保存日期,这样原始文件中的日期格式就不会模棱两可,但没有效果 示

我尝试从
readr
包中使用
read\u csv2()
导入一个
.csv
文件,该文件包含一个或多个只包含日期的列。我原以为
read\u csv2()
会猜测这些列包含日期,但我得到
col\u character()
作为列规范

我无法预先指定哪一列应该是日期类型,因为我正在导入许多表,这些表的名称列在配置表中(我使用循环导入该配置表中列出的每个表)。因此,我的问题是:有没有办法让
读取\u csv2()
正确猜测日期类型

我试着用不同的日期格式保存日期,这样原始文件中的日期格式就不会模棱两可,但没有效果

示例

资料

输入代码

read_csv2("t_table.csv")
由于采用上述导入方式而导致的列规格

Parsed with column specification:
cols(
  id = col_integer(),
  date = col_character(),
  colour = col_character()
可以看到列
date
是字符类型

更新


我找到了一种解决问题的方法:在输入文件中,使用日期格式(我通过excel执行此操作)
yyyy-mm-dd
,而不是
dd/mm/yyyy
。请注意,
dd-mm-yyyyy
不起作用。

您的问题表明,无法预测包含日期的列的名称和位置。如果是这样,一个小技巧可能是识别包含
/
符号的列,并将其转换为
日期
格式。 这不是你追求的自动“猜测”,但可能有一些用处

find<-grep("[/]", t_table)

t_table[,find]<-as.Date(t_table[,find],'%d/%m/%Y')

str(t_table)
#'data.frame':  4 obs. of  3 variables:
# $ id    : Factor w/ 4 levels "1","2","3","4": 1 2 3 4
# $ date  : Date, format: "2015-12-31" "2016-01-31" "2016-02-29" "2016-03-31"
# $ colour: Factor w/ 4 levels "blue","green",..: 2 4 3 1

感谢您的建议。你的想法可能有用。由于这些表是配置表(因此,是我自己设计的),因此,这次我只需要使用不同的格式解决方法(请参阅我文章中的更新)。
find<-grep("[/]", t_table)

t_table[,find]<-as.Date(t_table[,find],'%d/%m/%Y')

str(t_table)
#'data.frame':  4 obs. of  3 variables:
# $ id    : Factor w/ 4 levels "1","2","3","4": 1 2 3 4
# $ date  : Date, format: "2015-12-31" "2016-01-31" "2016-02-29" "2016-03-31"
# $ colour: Factor w/ 4 levels "blue","green",..: 2 4 3 1