Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中查找日期列。日期列具有不同的日期格式。将所有日期格式替换为dd mmm yyyy_R_Date - Fatal编程技术网

在R中查找日期列。日期列具有不同的日期格式。将所有日期格式替换为dd mmm yyyy

在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日

创建只标识数据框中日期列的函数。并将其格式更改为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日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