我有我想在不同的格式(如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),日期) ' –