2013-06-18 125 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

相关问题