有条件地更改R中列表的日期格式

有条件地更改R中列表的日期格式,r,list,function,dataframe,R,List,Function,Dataframe,我正在处理一个长度为20的列表。我有不同格式的表单列表,如下所示: 在这种情况下,请使用正确的格式列出.1 Id DATE 1 2019/02/01 2 2019/02/04 3 2019/02/04 列表2格式错误 Id DATE 4 42586 5 42587 6 45590 我想把list.2的格式改为list.1格式 我试过这个: for(i in 1:20) { DF[[i]]$DATA=as.Date.numeric(as.numeric(as.cha

我正在处理一个长度为20的列表。我有不同格式的表单列表,如下所示:

在这种情况下,请使用正确的格式列出.1

Id  DATE
1   2019/02/01
2   2019/02/04
3   2019/02/04
列表2格式错误

Id  DATE
4   42586
5   42587
6   45590
我想把list.2的格式改为list.1格式

我试过这个:

for(i in 1:20) {
DF[[i]]$DATA=as.Date.numeric(as.numeric(as.character(DF[[i]]$DATA)),origin = "1899-12-30")
}
所以,没有工作,我的函数没有选择有问题的工作表,但是选择了所有的工作表

使用lubridate 如果您确切知道原始参考日期,我会:

检测该值是否为数字 如果是这样,将启动的默认天数从1899-12-30减少到1970-01-01 使用lubridate as_date函数读取上述数据的输出
将ifelse与字符串detect一起使用?如当前所写,您正在将As.Date.,origin=1899-12-30应用于每个工作表。要处理这两种日期格式,首先需要检查日期的格式,然后根据该结果应用适当的日期转换。可以使用正则表达式检查日期的格式