如何解决将R中的日期从破折号转换为斜杠格式?
我有以下日期:
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吗?
解决方法
@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","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>
我的一般建议是,当可以使用适当的日期解析器时,永远不要在日期输入中使用字符串操作或正则表达式。
,您需要先将日期转换为日期类,然后使用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)
将数据转换为日期类。
在这里,您可以使用anytime
包将其转换为日期格式,然后将-替换为斜杠/
library(dplyr)
library(stringr)
library(anytime)
my_dataset <- tibble(my_date = c("03-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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。