将 R 中的日期从破折号转换为斜线格式?

Convert Date in R from dash to slash format?

我有以下日期:

my_dataset <- tibble(my_date = c("03-05-2020", "04-05-2020", "05-05-2020", "06-05-2020"))

我想创建一个名为 nice_dates 的新列,其日期格式为:dd/mm/yyyy 格式,所以我最终会得到一些东西像这样:

my_date    | nice_dates 
03-05-2020 | 03/05/2020
04-05-2020 | 04/05/2020
05-05-2020 | 05/05/2020
06-05-2020 | 06/05/2020

我曾尝试使用 lubridate pacakge,但在定义新格式时卡住了,我知道它应该是“%d/%m/%Y”,但是使用 as.Date() 会产生 NA。

我应该改用 gsub 吗?

您需要先将日期转换为 class 日期,然后使用 format 获取所需格式的数据。由于您想要的最终输出是字符,因此您也可以在此处使用 gsub

library(dplyr)

my_dataset %>%
  mutate(nice_dates = format(as.Date(my_date, '%d-%m-%Y'), '%d/%m/%Y'), 
         nice_dates_gsub = gsub('-', '/', my_date))

# A tibble: 4 x 3
#  my_date    nice_dates nice_dates_gsub
#  <chr>      <chr>      <chr>          
#1 03-05-2020 03/05/2020 03/05/2020     
#2 04-05-2020 04/05/2020 04/05/2020     
#3 05-05-2020 05/05/2020 05/05/2020     
#4 06-05-2020 06/05/2020 06/05/2020     

您还可以使用 lubridate::dmy(my_date) 将数据转换为日期 class。

在这里你可以使用anytime包转换成日期格式然后用斜杠/

替换-
library(dplyr)
library(stringr)
library(anytime)
my_dataset <- tibble(my_date = c("03-05-2020", "04-05-2020", "05-05-2020", "06-05-2020"))
my_dataset$mice_date <- format(anydate(my_dataset$my_date), '%m/%d/%Y')
#   my_date    mice_date 
#   <chr>      <chr>     
# 1 03-05-2020 03/05/2020
# 2 04-05-2020 04/05/2020
# 3 05-05-2020 05/05/2020
# 4 06-05-2020 06/05/2020

@ThoVu 快到了。因此,为了完整起见,只有基数 R.

的答案要简单得多 代码
## input data as before
df <- data.frame(my_date = c("03-05-2020", "04-05-2020", 
                             "05-05-2020", "06-05-2020"))

## create Date objects using base R
df$parsed <- strptime(df$my_date, "%d-%m-%Y")

## format them to spec
df$nice_dates <- format(df$parsed, "%d/%m/%Y")
输出
R> df <- data.frame(my_date = c("03-05-2020", "04-05-2020",
                                "05-05-2020", "06-05-2020"))
R> df$parsed <- strptime(df$my_date, "%d-%m-%Y")
R> df$nice_dates <- format(df$parsed, "%d/%m/%Y")
R> df
     my_date     parsed nice_dates
1 03-05-2020 2020-05-03 03/05/2020
2 04-05-2020 2020-05-04 04/05/2020
3 05-05-2020 2020-05-05 05/05/2020
4 06-05-2020 2020-05-06 06/05/2020
R> 

我的一般建议是 永远不要 在可以使用适当的日期解析器的情况下对日期输入使用字符串操作或正则表达式。