我有我想在不同的格式(如CHR)一个问题,我认为是通过使用正则表达式解决了R.正则表达式的个位数
我有一组日期(如CHR)的。
我试图欺骗下面的例子,其中第一个(new_dates)给出正确的格式数月1-9和错误的10-12和(new_dates2)给出正确的格式为10-12,但没有为1-9。
我看到的是,在第一种情况下的代码一个数字匹配两次,10-12,但真的不知道该怎么告诉它仅匹配单个数字。
正确日期的最终载体显示了结果,我想。
dates <- c("1/2016", "2/2016", "3/2016", "4/2016", "5/2016", "6/2016", "7/2016", "8/2016", "9/2016", "10/2016", "11/2016", "12/2016", "1/2017")
new_dates <- sub("(\\d)[:/:](\\d{4})","\\2M0\\1", dates)
new_dates2 <- sub("(\\d{2})[:/:](\\d{4})","\\2M\\1", dates)
correctdates <- c("2016M01", "2016M02", "2016M03", "2016M04", "2016M05", "2016M06", "2016M07", "2016M08", "2016M09", "2016M10", "2016M11", "2016M12", "2017M1")
我本人正则表达式的支持者,但一般会建议对他们的日期和时间的情况下使用。专用软件包中有更强大的功能,例如用于这些任务的'lubridate'。 –
这里的一个基R法,将返回所需的格式:'格式(as.Date(paste0( “1 /”,日期), “%d /%米/%Y”), “%YM%M”)' 。 – lmo
随着正则表达式,就可以做到这一点,但与'gsubfn':'gsubfn( “(\\ d {1,2})/(\\ d {4})”,函数(X,Y)paste0(Y, “M”,ifelse(NCHAR(X)== 2 “”, “M”),X),日期) ' –