使用 lubridate 和管道将日期转换为年月日
convert date to year-month-day using lubridate and pipes
我想使用 lubridate 和管道将“day/month/year”中的日期转换为“year/month/day”,但我遇到了问题。此外,'public_release' 的第一行切换了日期和月份。 bwg_release
和 public_release
的前三行应反映 1 月 6 日的日期。
例如
datasets %>%
+ select(bwg_release, public_release)
bwg_release public_release
1 06/01/2016 01/06/2018
2 06/01/2016 06/01/2018
3 06/01/2016 06/01/2018
4 17/04/2016 17/04/2016
当前输出:
datasets %>%
+ mutate(bwg_release_new_date = format(dmy(bwg_release),"%Y/%m/%d")) %>%
+ mutate(public_release_new_date = format(dmy(public_release),"%Y/%m/%d")) %>%
+ select(bwg_release_new_date,public_release_new_date)
bwg_release_new_date public_release_new_date
1 2016/01/06 2018/06/01
2 2016/01/06 2018/01/06
3 2016/01/06 2018/01/06
4 2016/04/17 2016/04/17
期望的输出:
bwg_release_new_date public_release_new_date
1 2016/01/06 2018/01/06
2 2016/01/06 2018/01/06
3 2016/01/06 2018/01/06
4 2016/04/17 2016/04/17
我相信建议是使用基础 format
函数。只需使用 dmy()
读取日期,然后定义您的格式。
library(dplyr)
library(lubridate)
datasets %>%
mutate(output = format(dmy(bwg_release), format = "%Y/%m/%d"))
bwg_release output
1 06/01/2016 2016/01/06
2 06/01/2016 2016/01/06
3 06/01/2016 2016/01/06
4 17/04/2016 2016/04/17
为了完整起见使用正则表达式,尽管 @IanCampbell (+1) 解决方案是可行的方法。
datasets %>%
mutate(bwg_release=ymd(gsub("(\d+)/(\d+)/(\d+)","\3/\2/\1", bwg_release)))
# A tibble: 4 x 1
bwg_release
<date>
1 2016-01-06
2 2016-01-06
3 2016-01-06
4 2016-04-17
我想使用 lubridate 和管道将“day/month/year”中的日期转换为“year/month/day”,但我遇到了问题。此外,'public_release' 的第一行切换了日期和月份。 bwg_release
和 public_release
的前三行应反映 1 月 6 日的日期。
例如
datasets %>%
+ select(bwg_release, public_release)
bwg_release public_release
1 06/01/2016 01/06/2018
2 06/01/2016 06/01/2018
3 06/01/2016 06/01/2018
4 17/04/2016 17/04/2016
当前输出:
datasets %>%
+ mutate(bwg_release_new_date = format(dmy(bwg_release),"%Y/%m/%d")) %>%
+ mutate(public_release_new_date = format(dmy(public_release),"%Y/%m/%d")) %>%
+ select(bwg_release_new_date,public_release_new_date)
bwg_release_new_date public_release_new_date
1 2016/01/06 2018/06/01
2 2016/01/06 2018/01/06
3 2016/01/06 2018/01/06
4 2016/04/17 2016/04/17
期望的输出:
bwg_release_new_date public_release_new_date
1 2016/01/06 2018/01/06
2 2016/01/06 2018/01/06
3 2016/01/06 2018/01/06
4 2016/04/17 2016/04/17
我相信建议是使用基础 format
函数。只需使用 dmy()
读取日期,然后定义您的格式。
library(dplyr)
library(lubridate)
datasets %>%
mutate(output = format(dmy(bwg_release), format = "%Y/%m/%d"))
bwg_release output
1 06/01/2016 2016/01/06
2 06/01/2016 2016/01/06
3 06/01/2016 2016/01/06
4 17/04/2016 2016/04/17
为了完整起见使用正则表达式,尽管 @IanCampbell (+1) 解决方案是可行的方法。
datasets %>%
mutate(bwg_release=ymd(gsub("(\d+)/(\d+)/(\d+)","\3/\2/\1", bwg_release)))
# A tibble: 4 x 1
bwg_release
<date>
1 2016-01-06
2 2016-01-06
3 2016-01-06
4 2016-04-17