在R中查找日期列。日期列具有不同的日期格式。将所有日期格式替换为dd mmm yyyy
创建只标识数据框中日期列的函数。并将其格式更改为DD-MMM_YYYY(2020年1月1日)在R中查找日期列。日期列具有不同的日期格式。将所有日期格式替换为dd mmm yyyy,r,date,R,Date,创建只标识数据框中日期列的函数。并将其格式更改为DD-MMM_YYYY(2020年1月1日) 数据使用tidyverse(参见注释): date\u解析器% 在(-1,~stringr::str_处突变\u替换\u所有(,“\\/”,“-”)%>% purrr::map\u dfr(~date\u解析器() #一个tibble:3x5 名称Col2 col3 Col4 col5 1 A 2020年1月1日2020年2月5日XYZ 2020年3月1日 2 B 2020年2月1日2020年4月13日
数据使用tidyverse
(参见注释):
date\u解析器%
在(-1,~stringr::str_处突变\u替换\u所有(,“\\/”,“-”)%>%
purrr::map\u dfr(~date\u解析器()
#一个tibble:3x5
名称Col2 col3 Col4 col5
1 A 2020年1月1日2020年2月5日XYZ 2020年3月1日
2 B 2020年2月1日2020年4月13日REW 2019年1月1日
3 C 2020年5月31日2020年9月17日RRRR 2020年1月12日
注意:
这不是实际日期,您可以使用lubridate
再次转换它,尽管我怀疑dttm
是否支持混合日期。因此,据我所知,您仍然需要使用字符。请始终确保您的数据是可复制的。注意!谢谢:)结果应为“dd-mmm-yyyy”格式。(如2020年1月1日)它成功了!感谢当输入文件为“.csv”格式时,上述代码工作正常。但是,当输入文件为“.xlsx”格式时,上述代码会在日期内生成NA。知道吗?我可能很难说。你用哪个函数读取数据,数据是什么样子的?问题解决了!谢谢我的数据集中还有一些其他列包含“-”符号。所以现在这些也受到上述功能的影响
data <- data.frame(Name = c("A","B","C"),
Col2 = c("01-01-2020","01-Feb-2020","31/05/2020"),
col3 = c("05-Feb-2020","13/April/2020","2020-09-17"),
Col4 = c("XYZ","REW","RRRR"),
col5 = c("01-Mar-2020","01/01/2019","2020-01-12"))
func <- function(data) { }
date_parser <- function(column){
if(any(grepl("[-]",column))){
format(parse_date_time(column,orders = c("dmy","dby","ymd")),"%d-%b-%Y")
}
else column
}
df %>%
mutate_at(-1,~ stringr::str_replace_all(.,"\\/","-")) %>%
purrr::map_dfr(~date_parser(.))
# A tibble: 3 x 5
Name Col2 col3 Col4 col5
<chr> <chr> <chr> <chr> <chr>
1 A 01-Jan-2020 05-Feb-2020 XYZ 01-Mar-2020
2 B 01-Feb-2020 13-Apr-2020 REW 01-Jan-2019
3 C 31-May-2020 17-Sep-2020 RRRR 12-Jan-2020