R中的日期时间数据

时间:2015-03-20 07:55:10

标签: r datetime

我的数据格式如下。

x <- c("2012-03-01T00:05:55+00:00", "2012-03-01T00:06:23+00:00", 
             "2012-03-01T00:06:52+00:00")

实际数据很长。

我的目标是

  • 将它们转换为R
  • 中的每小时时间序列
  • 将我的数据汇总到每小时数据

1 个答案:

答案 0 :(得分:2)

首先使用asPOSIXct

将日期转换为日期时间类
 df = data.frame(x  = c("2012-03-01T00:05:55+00:00", "2012-03-01T00:06:23+00:00", 
                 "2012-03-01T00:06:52+00:00"))

df$times = as.POSIXct(df$x, format = "%Y-%m-%dT00:%H:%M+%S")

然后使用format

提取小时部分
df$hour = format(df$times, '%H')

这会给你:

                          x               times hour
1 2012-03-01T00:05:55+00:00 2012-03-01 05:55:00   05
2 2012-03-01T00:06:23+00:00 2012-03-01 06:23:00   06
3 2012-03-01T00:06:52+00:00 2012-03-01 06:52:00   06

或者您可以使用以下方式提取日期和时间:

df$date_hour = format(df$times, '%Y-%m-%d:%H')

有关更多信息,请参阅?strftime它说&#34;转换规范由%引入,通常后跟单个字母或O或E,然后是单个字母。格式字符串中不属于转换规范的任何字符都按字面解释(并且%%赋予%)。广泛实施的转换规范包括:...%H 小时数十进制数(00-23)。作为一个特殊的异常,可以接受24:00:00的字符串输入,因为ISO 8601允许这些。&#34;

现在,您可以使用plyr::ddply

之类的内容进行任何您想要的聚合
library(plyr)
ddply(df, .(hour), nrow)

  hour V1
1   05  1
2   06  2

ddply(df, .(date_hour), nrow)
      date_hour V1
1 2012-03-01:05  1
2 2012-03-01:06  2