我知道它可以以某种方式实现使用字符串,但想检查是否有任何简单的方法?很抱歉问了这么简单的问题
%Y
和%y
分别表示有世纪和没有世纪的年份。
x <- "20260310"
format(strptime(x, "%Y%m%d"), "%m-%d-%y")
# [1] "03-10-26"
strptime(x, "%Y%m%d")
将日期字符串转换为r中的标准Date
对象。format(..., "%m-%d-%y")
改变其外观,输出始终是字符。
另一种可能的解决方案,基于lubridate
:
library(lubridate)
library(tidyverse)
"20260310" %>% ydm %>% {str_c(day(.), month(.), str_sub(year(.), 3, 4), sep="-")}
#> [1] "3-10-26"
Try
> gsub("(\d{4})(\d{2})(\d{2})", "\2-\3-\1", "20260310")
[1] "03-10-2026"
另一个选择是chron
from {chron} package:
x <- "20260310"
x |> chron(format = "ymd") |> chron(format = "m-d-y")
#[1] 03-10-26
结果有日期"格式。
润滑液的变化
library(lubridate)
x <- "20260310"
f <- stamp("01-10-22", orders = "%d-%Om-%y")
ymd(x) |> f()
stamp()产生一个函数,可以重复应用。
require(lubridate)
require(tidyverse)
"20260310" %>% ydm() %>%
format("%y-%m-%d")
[1] "03-10-26"
"20260310" %>% format("%y-%m-%d") %>% ydm() %>% class()
[1] "Date"