将日期时间字符串转换为R中的日期

时间:2013-06-18 12:03:46

标签: r csv time

当我读入我的.csv文件,并从字符串转换start_date时,日期很好,但似乎会缩短时间

我的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”

为什么不给它一天的时间?

我确定我做了一些蠢事,比如新手......提前谢谢!

1 个答案:

答案 0 :(得分: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不包含当天时间的信息。