簡體   English   中英

如何以月-年格式獲取日期?

[英]How to get date in month-year format?

我從具有以下日期類型的人那里獲得了數據:

"Jan-20", "Feb-19", "May-18"

我想將它們轉換為以下格式:

"01-20", "02-19", "05-18"

但是每當我嘗試將列轉換為as.date它都會返回 NA 值。

例如

df<- data.frame(MonthYear = c("Jan-20", "Feb-19", "May-18"))
df$MonthYear<-as.Date(df$MonthYear, format = "%b-%y")

輸出:

MonthYear
1      <NA>
2      <NA>
3      <NA>

所以我使用了以下代碼並添加了 day 。 但我不想要日期:

df<- data.frame(MonthYear = c("Jan-20", "Feb-19", "May-18"))
df$MonthYear<-paste(as.character(df$MonthYear))
df$MonthYear<-paste("01-",as.character(df$MonthYear))
df$MonthYear<-as.Date(df$MonthYear, format = "%d- %b-%y")

輸出:

MonthYear
1 2020-01-01
2 2019-02-01
3 2018-05-01

但我需要的輸出如下:

MonthYear
1 2020-01
2 2019-02
3 2018-05

使用as.yearmon()從動物園包(和magrittr管):

library(zoo)
library(magrittr)
as.yearmon(df$MonthYear, "%b-%y") %>%
 format(., "%Y-%m")


[1] "2020-01" "2019-02" "2018-05"

也可以不用'.' 用作管道左側的占位符。 由於這些功能不是典型的 tidyverse 管道功能,因此保留了它。

as.yearmon(df$MonthYear, "%b-%y") %>%
 format("%Y-%m")

或者根本沒有管道,並使用嵌套函數(如@Sotos 所指出的)。 我發現它們更難閱讀,並且通常會加載 tidyverse(因此 %>% 管道)。

format(as.yearmon(df$MonthYear, "%b-%y"), "%Y-%m")

您可以粘貼任意日期,轉換為日期,然后使用format

format(as.Date(paste0("01-",df$MonthYear), "%d-%b-%y"), "%Y-%m")
#[1] "2020-01" "2019-02" "2018-05"

也許您可以嘗試使用gsub()僅保留年份和月份,即,

format(gsub("(.*)-\\d+","\\1",df$MonthYear),format = "%Y-%m")

要不就

gsub("(.*)-\\d+","\\1",df$MonthYear)

以至於

[1] "2020-01" "2019-02" "2018-05"

數據

df <- structure(list(MonthYear = structure(c(18262, 17928, 17652), class = "Date")), class = "data.frame", row.names = c(NA, 
-3L))
x <- c("Jan-20", "Feb-19", "May-18")
for (i in seq_along(month.abb)) x <- sub(month.abb[i], sprintf("%02d", i), x) 
# Can add fixed = TRUE for speed

x
# [1] "01-20" "02-19" "05-18"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM