2013-06-18 121 views
1

當我在我的.csv文件讀取,並從字符串轉換起始日期,日期是好的,但它似乎下降的時間日期時間字符串轉換爲日期與時間中的R

我的CSV文件看起來像這樣的:

SAMPNUM,SITE,VISITNUM,entered_order,method,start_date,start_crew,end_date,end_crew 
2002,165,4,736,leaf_litter,8/17/11 0:00,FSA,NA,NA 
2003,172,4,737,leaf_litter,8/17/11 0:00,FSA,NA,NA 
5004,122,4,21,pitfall,8/17/11 12:15,ADY SJT PSA JRW SWH,9/2/11 0:00,ADY 
5005,123,4,22,pitfall,8/17/11 13:00,ADY SJT PSA JRW SWH,9/2/11 0:00,ADY 

我第一次在文件中讀取:

sample<-read.csv('SampleType.csv', header = TRUE, na.strings=c("NA","")) 

這似乎在細閱讀,我的數據是這樣的:

2002 165 4 736 leaf_litter 8/17/11 0:00 FSA NA NA 
2003 172 4 737 leaf_litter 8/17/11 0:00 FSA NA NA 
5004 122 4 21 pitfall 8/17/11 12:15 ADY SJT PSA JRW SWH 9/2/11 0:00 ADY 
5005 123 4 22 pitfall 8/17/11 13:00 ADY SJT PSA JRW SWH 9/2/11 0:00 ADY 

,但是當我嘗試的日期/時間轉換,我卡住了。我已經試過失去的東西,但我的最好的是:

sample$start_date <- as.Date(sample$start_date, "%m/%d/%y %H:%M") 
sample$end_date <- as.Date(sample$end_date, "%m/%d/%y %H:%M") 

該離開我的數據看起來像:

2002 165 4 736 leaf_litter 15203 FSA NA NA 
2003 172 4 737 leaf_litter 15203 FSA NA NA 
5004 122 4 21 pitfall 15203 ADY SJT PSA JRW SWH 15219 ADY 
5005 123 4 22 pitfall 15203 ADY SJT PSA JRW SWH 15219 ADY 

,但是當我看值

樣品$起始日期[ 3]

我得到:

[1] 「2011-08-17」

爲什麼沒有給一天的時間?

我知道我在做一些愚蠢的事,這樣的新手....提前感謝!

+0

您將轉換爲「Date」類,它根據定義不包含時間。看一下'?strptime'或'?as.POSIXct'。 – Roland

+0

我已經看了這些,但無法弄清楚如何讓他們的工作:'$樣品START_DATE < - as.POSIXct(樣品$起始日期 「%M /%d /%Y%H:%M」 )'不這樣做,也不會'樣品$ START_DATE < - strptime(樣品$起始日期, 「%米/%d /%Y%H:%M」)' –

+1

檢查出'lubridate'包,其處理時間以非常自然/合理的方式呈現對象。 –

回答

1

使用as.POSIXctstrptime

as.POSIXct("9/2/11 4:20", format="%m/%d/%y %H:%M",tz="GMT") 
#[1] "2011-09-02 04:20:00 GMT" 

strptime("9/2/11 4:20", format="%m/%d/%y %H:%M",tz="GMT") 
#[1] "2011-09-02 04:20:00 GMT" 

Date不包含由定義一天中的時間信息。

+0

這樣做了,謝謝! '樣品$ START_DATE < - as.POSIXct(樣品$起始日期,格式= 「%米/%d /%Y%H:%M」)' –

+0

我真的建議明確設置的時區。否則,您可能遲早會遇到夏令時問題。 – Roland

相關問題