无法将yymmdd转换为mmddyy

时间:2019-06-29 14:17:33

标签: r lubridate

这是mydata

ga=structure(list(Date = c(190410L, 190410L, 190410L, 190410L, 190410L
), open = c(162.4, 162.57, 162.94, 162.87, 162.96), high = c(162.57, 
162.94, 162.95, 163, 163.11), low = c(162.12, 162.51, 162.83, 
162.83, 162.95), close = c(162.57, 162.94, 162.9, 162.95, 162.95
)), class = "data.frame", row.names = c(NA, -5L))

我使用mdy中的lubridate函数

ga$Date=mdy(ga$Date)

所以我只得到NA。 我如何获得这样的输出格式(mm.dd.yy)

    Date        open   high    low  close
1   04.10.2019 162.40 162.57 162.12 162.57
2   04.10.2019 162.57 162.94 162.51 162.94
3   04.10.2019 162.94 162.95 162.83 162.90
4   04.10.2019162.87 163.00 162.83 162.95
5   04.10.2019 162.96 163.11 162.95 162.95

3 个答案:

答案 0 :(得分:3)

我们可以使用:

strftime(lubridate::ymd(ga$Date),"%m %d %Y")
[1] "04 10 2019" "04 10 2019" "04 10 2019" "04 10 2019" "04 10 2019"

上面将返回日期的字符表示形式,如果您希望保留为日期(我发现显示有些误导),则可以使用:

lubridate::mdy(strftime(lubridate::ymd(ga$Date),"%m %d %y"))
[1] "2019-04-10" "2019-04-10" "2019-04-10" "2019-04-10" "2019-04-10"

也许mdy默认使用这种表示形式,如here所示。

答案 1 :(得分:3)

我们可以使用基数R获得所需格式的输出

ga$Date <- format(as.Date(as.character(ga$Date), "%y%m%d"), "%m.%d.%Y")

ga
#        Date   open   high    low  close
#1 04.10.2019 162.40 162.57 162.12 162.57
#2 04.10.2019 162.57 162.94 162.51 162.94
#3 04.10.2019 162.94 162.95 162.83 162.90
#4 04.10.2019 162.87 163.00 162.83 162.95
#5 04.10.2019 162.96 163.11 162.95 162.95

答案 2 :(得分:3)

我们可以使用anydate中的anytime

library(anytime)
format(anydate(as.character(ga$Date)), "%m.%d.%Y")
#[1] "04.10.2019" "04.10.2019" "04.10.2019" "04.10.2019" "04.10.2019"

如果要转换日期时间格式

str1 <- "190410;100000"
format(as.POSIXct(str1, format= "%y%m%d;%H%M%S"), "%m.%d.%Y %H:%M")
#[1] "04.10.2019 10:00"