我對R相對較新,但這是我第一次必須處理日期轉換。我從CSV讀取數據(使用read.table()),但是我縮短了數據以突出顯示我的問題。當讀入R時,日期字段是字符。將字符轉換爲R中的日期
簡單地說,除了少數情況外,我的大部分日期都會被正確強制。下面的例子會希望告訴你發生了什麼。
# my attempt to coerce the date -- uses the stringr package
prods.all$Date2 <- as.Date(str_sub(prods.all$Date, 1,
str_locate(prods.all$Date, " ")[1]-1),
"%m/%d/%Y")
# grab two rows to highlight my issue
temp <- prods.all[c(1925:1926), c(1,8)]
> temp
Date Date2
1925 10/9/2009 0:00:00 2009-10-09
1926 10/15/2009 0:00:00 0200-10-15
正如您所看到的,某些日期的年份並不準確。這種模式似乎發生在一天是兩位數的時候。
我已經瀏覽了幾本書,並試圖Google更好的方式,但一切似乎表明,我的數據輸入格式不正確。
鑑於R的功能強大,我認爲有一種非常簡單的方法可以強制我的列成爲有效的日期,並且我忽略了一個非常明顯的解決方案。
任何幫助,您可以提供將不勝感激。
的原因,你所得到的是無效0200的日期是一天中的字符長度不同(15-Oct爲兩位數字,9-10月爲一位數字) - 而您的字符串替換代碼並不能解釋這一點。無論如何,您可以直接使用as.Date或strptime格式agument,而無需進一步處理字符。 – mdsumner 2010-11-30 04:21:06