[英]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.