2015-04-22 92 views
0

我很抱歉,如果這非常簡單,因爲我相對較新的R,但我一直在這個問題上停留了一段時間,似乎無法通過在線搜索找到我的答案。創建步驟時間間隔

我想創建一個數據幀與一列分鐘日期時間間隔基於從一個單獨的數據框(「滴」)的時間。

> head(drops) 
    uid    tid    dtdep    dtpull nutm  eutm 
1 256 A69-1601-27561 2014-04-28 10:14:00 2014-04-28 11:21:00 1966514 329557.4 
2 257 A69-1303-54408 2014-04-28 10:22:00 2014-04-28 11:26:00 1966884 329507.1 
3 258 A69-1601-27331 2014-04-28 10:28:00 2014-04-28 11:37:00 1967184 329458.8 
4 259 A69-1303-31936 2014-04-28 10:38:00 2014-04-28 11:50:00 1968022 329896.8 
5 260 A69-1303-54408 2014-04-28 11:32:00 2014-04-28 12:40:00 1966883 329556.9 
6 261 A69-1601-27331 2014-04-28 11:45:00 2014-04-28 12:46:00 1967084 329459.0 

我創建了一個空數據幀來存儲我的輸出

> steptimes<-data.frame(matrix(NA,nrow=300,ncol=1)) 

而且跑環以下,但它只生成我滴的第五行時間步長$ dtdep

>for(j in 1:5){ 
> steptimes[j]<-seq(from=drops$dtdep[j],length=60,by="min") 
>} 

我的輸出如下

> steptimes 
[1] "2014-04-28 11:32:00 EDT" "2014-04-28 11:33:00 EDT" "2014-04-28 11:34:00 EDT" "2014-04-28 11:35:00 EDT" 
[5] "2014-04-28 11:36:00 EDT" "2014-04-28 11:37:00 EDT" "2014-04-28 11:38:00 EDT" "2014-04-28 11:39:00 EDT" 
[9] "2014-04-28 11:40:00 EDT" "2014-04-28 11:41:00 EDT" "2014-04-28 11:42:00 EDT" "2014-04-28 11:43:00 EDT" 
[13] "2014-04-28 11:44:00 EDT" "2014-04-28 11:45:00 EDT" "2014-04-28 11:46:00 EDT" "2014-04-28 11:47:00 EDT" 
[17] "2014-04-28 11:48:00 EDT" "2014-04-28 11:49:00 EDT" "2014-04-28 11:50:00 EDT" "2014-04-28 11:51:00 EDT" 
[21] "2014-04-28 11:52:00 EDT" "2014-04-28 11:53:00 EDT" "2014-04-28 11:54:00 EDT" "2014-04-28 11:55:00 EDT" 
[25] "2014-04-28 11:56:00 EDT" "2014-04-28 11:57:00 EDT" "2014-04-28 11:58:00 EDT" "2014-04-28 11:59:00 EDT" 
[29] "2014-04-28 12:00:00 EDT" "2014-04-28 12:01:00 EDT" "2014-04-28 12:02:00 EDT" "2014-04-28 12:03:00 EDT" 
[33] "2014-04-28 12:04:00 EDT" "2014-04-28 12:05:00 EDT" "2014-04-28 12:06:00 EDT" "2014-04-28 12:07:00 EDT" 
[37] "2014-04-28 12:08:00 EDT" "2014-04-28 12:09:00 EDT" "2014-04-28 12:10:00 EDT" "2014-04-28 12:11:00 EDT" 
[41] "2014-04-28 12:12:00 EDT" "2014-04-28 12:13:00 EDT" "2014-04-28 12:14:00 EDT" "2014-04-28 12:15:00 EDT" 
[45] "2014-04-28 12:16:00 EDT" "2014-04-28 12:17:00 EDT" "2014-04-28 12:18:00 EDT" "2014-04-28 12:19:00 EDT" 
[49] "2014-04-28 12:20:00 EDT" "2014-04-28 12:21:00 EDT" "2014-04-28 12:22:00 EDT" "2014-04-28 12:23:00 EDT" 
[53] "2014-04-28 12:24:00 EDT" "2014-04-28 12:25:00 EDT" "2014-04-28 12:26:00 EDT" "2014-04-28 12:27:00 EDT" 
[57] "2014-04-28 12:28:00 EDT" "2014-04-28 12:29:00 EDT" "2014-04-28 12:30:00 EDT" "2014-04-28 12:31:00 EDT" 

這是好的,但我需要爲其他滴生成的步驟時間$ dtdep

任何幫助將非常讚賞和道歉,如果這令人難以置信的簡單化。

謝謝!

回答

0

它可能是不循環更好:

dtdep <- c(as.POSIXct("2014-04-28 10:14:00"), 
      as.POSIXct("2014-04-28 10:22:00")) 
drops <- data.frame(dtdep) 

steptimes <- lapply(drops$dtdep, function(x){ 
     seq(from = x, length = 60, by = "min") 
}) 
# As a vector 
steptimes <- do.call(c, steptimes) 
# As a data frame with one column if this is really necessary 
steptimes <- data.frame(steptimes) 

如果僅基於第一ñ dtdep元素需要時間選擇那些在steptimes <- lapply(drops$dtdep[1:5], ...

+0

感謝您的回覆,但是我得到以下錯誤信息「seq.default中的錯誤(from = x,length = 60,by =」min「): 'from'must be length 1」我相信這是因爲「x」是日期時間向量和seq函數只能處理單個值?無論如何,感謝您的回覆,我會繼續努力。 – Espenshade

+0

對不起,我無法重現那個錯誤。 'x'不是一個向量,而是'drop $ dtdep'的單個元素,這就是'lapply'的用處。我編輯了我的答案,包括一個工作示例。 – thie1e

+0

解決了!謝謝!我想我可能一直在爲lapply函數輸入錯誤的對象。 – Espenshade