我开始学习r语言。我们需要整理一份数据集。日期列上的日期格式为May_08。该列需要按月份和年份分隔,例如:从May_08到May 2008。以下是我目前的代码。
dataset %>%
separate(date, c("month","year"))
strftime
,只需在字符串前面粘贴一个日期即可。x <- "May_08"
strftime(as.Date(paste(1, x), format="%d %b_%y"), "%b %Y")
# [1] "May 2008"
as.Date(paste(1, "May_33"), format="%d %b_%y")
返回的结果是"2033-05-01"
,这是否不正确? - r2evansx <- "May_08"
library(lubridate)
paste(month(parse_date_time(x, "my"), label = T), year(parse_date_time(x, "my")), sep = " ")
# [1] "May 2008"
ifelse
语句就可以解决问题。例如,在这个例子中,1990年是分界年份,所以代码如下:yrs <- c(91,94,97,00,03,06,09,12,15,18,21)
yrs <- ifelse(yrs>90, yrs+1900, yrs+2000)
> print(yrs)
[1] 1991 1994 1997 2000 2003 2006 2009 2012 2015 2018 2021
as.Date
或as.POSIXct
读取日期,然后保持不变。只有在需要将其打印出来(或以字符串形式用于其他原因)时,才使用strftime
或format
将其转换为所需的格式。这样你可以充分利用R
对日期处理的能力(例如绘图、进行日期计算、排序等)。 - dario