【问题标题】:converting date time string to date with time in R在R中将日期时间字符串转换为带有时间的日期
【发布时间】:2013-06-18 12:03:46
【问题描述】:

当我读入我的 .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

但是当我看价值观时

样品$start_date[3]

我明白了:

[1]“2011-08-17”

为什么不给出一天中的时间?

我确定我在做一些愚蠢的事情,这样一个新手....提前谢谢!

【问题讨论】:

  • 您转换为Date 类,根据定义,它不包含时间。看?strptime?as.POSIXct
  • 我看过这些,但不知道如何让它们工作:sample$start_date &lt;- as.POSIXct(sample$start_date, "%m/%d/%y %H:%M") 不这样做,sample$start_date &lt;- strptime(sample$start_date, "%m/%d/%y %H:%M") 也不这样做
  • 查看lubridate 包,它以非常自然/明智的方式处理日期对象。
  • 谢谢,看来lubridate 对于初学者(比如我)来说是处理日期时间问题的一种更简单的方法。

标签: r csv time


【解决方案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 类不包含定义的一天中的时间信息。

【讨论】:

  • 成功了,谢谢! sample$start_date &lt;- as.POSIXct(sample$start_date, format="%m/%d/%y %H:%M")
  • 我真的建议明确设置时区。否则你迟早会遇到夏令时的麻烦。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2022-01-24
相关资源
最近更新 更多