2015-03-02 62 views
0

我是新的R. 我在.csv格式的表12K行象下面這樣:困難算術與時間中的R

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分鐘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

嘗試獲取有關POSIXlt更多信息'DF%>%變異(RadTimeNew =滯後(RadTime),dBZ.New =滯後(DBZ))'從'dplyr'包。但要注意'stringsAsFactors = FALSE'設置爲讀取數據 – DatamineR 2015-03-02 15:04:13

+0

或者使用'library(data.table); setDT(df1)[,c('RadTimeNew','dBZ.New'):= shift(.SD),.SDcols = c(4,6)] []' – akrun 2015-03-02 15:07:46

+0

@RStudent該代碼不工作! ! – 2015-03-03 03:05:01

回答

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