我給出如下特徵向量:更換日期的特徵向量,以特定的格式
"On the evening of 2017-04-23, I was too tired"
"to complete my homework that was due on 24.04.2017."
我需要通過它來搜索日期的所有出現,並與格式MONTHNAME d,YYYY替換它們。
我知道一般格式應該是%B%d,%Y,我可能必須使用sub()
函數,但我不太確定如何將兩者結合在一起。
當我嘗試像
sub("[0-9]{2}.[0-9]{2}.[0-9]{4}","%B %d, %Y",x)
我剛剛得到以下結果
"On the evening of 2001-01-15, I was too tired to complete my homework that was due on %B %d, %Y."
可能有人請幫助我弄清楚如何把它一起?
我與同伴stackoverflowers的幫助下新的代碼如下:
streamlineDates(x)
{
#set pattern to dates in form of YYYY-MM-DD or DD.MM.YYYY
pattern <- "\\d{2,4}[.-]\\d{2}[.-]\\d{2,4}"
y <- c(x)
val <- unlist(regmatches(y, gregexpr(pattern, y)))
val1 <- as.Date(val,format=c("%Y-%m-%d","%d.%m.%Y"))
val2 <- format(val1,"%B %d, %Y")
y1 <- list()
for (i in 1:length(y)){
y1[i] <- gsub(pattern,val2[i],y[i])
}
}
然而,當我只輸入:
x <- "to complete my homework that was due on 24.04.2017."
...它只返回NA。我已將問題範圍縮小到gsub
,其中替換值值,「如果NA,則結果中對應於匹配的所有元素將被設置爲NA」。因此,當僅輸入最後一行時缺少第一個日期,它僅返回NA。
我該如何讓它接受一個或兩個日期?
數據格式(例如, '%B%d%Y')不能用在'sub'或'gsub'函數中,它必須用在'as.Date'中。 – emilliman5
@ sooki-sooki看到我的解決方案,我希望這有助於。謝謝 – PKumar