我在查找高效將數據表中的字符串列轉換爲日期列的方式,但條件是字符串可能處於三種日期格式之一 - 數量,%Y-%m-%d,%m /%d /%Y。將表示各種格式化日期的字符串列轉換爲日期列
下面舉例說明了如何一個假設的功能datefun
會表現:
library(data.table)
dt <- data.table(my_dates = c('42292.7894','2014-06-22','11/25/2011','33661', NA))
datefun(dt$my_dates)
[1] "2015-10-15" "2014-06-22" "2011-11-25" "1992-02-27" NA
這將是相同的應用as.Date到每個字符串與字符串格式的知識。
l <- dt$my_dates
c(as.Date(as.numeric(l[1]), origin = "1899-12-30"),
as.Date(l[2],'%Y-%m-%d'),
as.Date(l[3],'%m/%d/%Y'),
as.Date(as.numeric(l[4]), origin = "1899-12-30"),
as.Date(l[5]))
[1] "2015-10-15" "2014-06-22" "2011-11-25" "1992-02-27" NA
我試圖直接從沒有被格式化的excel直接讀取數據。
您將需要使用正則表達式匹配和條件轉換。例如'stringr'包的'str_extract(dt,'\\ d + - \\ d + - \\ d +')'會提取所有2015-10-15字符串。您可以將as.Date()應用於它們。 'str_extract(dt,'\\ d +。\\ d +')'類型爲42292.7894等。如果您想強制執行某些固定的數字位數,則可以使用更好的模式匹配。 – Gopala
有關於類似問題的幾個問題。看看是否有這些幫助:[一](http://stackoverflow.com/questions/34389139/format-multiple-date-formats-in-one-columns-using-lubridate),[two](http:// stackoverflow.com/questions/25463523/convert-variable-with-mixed-date-formats-to-one-format-in-r),[three](http://stackoverflow.com/questions/13764514/how-to -change-多日期格式合同列)。 – eipi10
非常感謝Gopala對你的建議和eipi10的參考。非常有幫助和啓發。 – Kerry