R中时间算术的难度

时间:2015-03-02 15:00:04

标签: r math time

我是R.的新人 我有一个.csv格式的表,有12K行,如下所示:

St.    date     Rgtime   RadTime    Rain    dBZ
3613006 20130113    0:06:00  0:06:00    2    -10.625
3613006 20130113    0:16:00  0:16:00    7    -11.75
3613006 20130113    0:26:00  0:26:00    1    -10.5625
3613006 20130113    0:36:00  0:36:00    9    -11.28125
3613006 20130113    0:46:00  0:46:00    3    -10.34375
3613006 20130113    0:56:00  0:56:00    8    -11.6875
3613006 20130113    1:06:00  1:06:00    9    -16
3613006 20130113    1:16:00  1:16:00    6    -25.3125
3613006 20130113    1:26:00  1:26:00    1    -16.3125
3613006 20130113    1:36:00  1:36:00    0    -20.71875

我想添加2列:

1- $ RgTime - 10分钟AS RadTimeNew

2-相关dBZ到RadTimeNew AS dBZ.New

预期结果:

St.     date       Rgtime   Rain    RadTime dBZ     RadTimeNew dBZ.New
3613006 20130113    0:06:00     2   0:06:00 -10.625      NA         NA
3613006 20130113    0:16:00     7   0:16:00 -11.75      0:06:00 -10.625
3613006 20130113    0:26:00     1   0:26:00 -10.5625    0:16:00 -11.75
3613006 20130113    0:36:00     9   0:36:00 -11.28125   0:26:00 -10.5625
3613006 20130113    0:46:00     3   0:46:00 -10.34375   0:36:00 -11.28125
3613006 20130113    0:56:00     8   0:56:00 -11.6875    0:46:00 -10.34375
3613006 20130113    1:06:00     9   1:06:00 -16         0:56:00 -11.6875
3613006 20130113    1:16:00     6   1:16:00 -25.3125    1:06:00 -16
3613006 20130113    1:26:00     1   1:26:00 -16.3125    1:16:00 -25.3125
3613006 20130113    1:36:00     0   1:36:00 -20.71875   1:26:00 -16.3125

我尝试使用lag(),但我的数据时间没有继续,并且有一些错误。所以我正在寻找一个新的脚本来处理这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

  df <- within(All.data, {
  posb <- as.POSIXlt(Rgdate,format="%Y/%m/%d %T")
  Day <- posb$mday
  Month <- posb$mon
  Year <-posb$year
  hours <- posb$hour
  mins <- posb$min
  Seconds <-posb$sec
  Time <- format(posb, "%T")
  Date <- format(posb, "%x") 
  posb <- NULL  # cleanup
} )

此代码将字符串转换为日期和时间,并在最后添加新列。只需要从分钟列中选择-10分钟即可。

您可以通过?POSIXlt

获取有关POSIXlt的更多信息