我是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()
,但我的数据时间没有继续,并且有一些错误。所以我正在寻找一个新的脚本来处理这个问题。
提前致谢。
答案 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