2011-04-11 86 views
11

我在R中與日期和時間鬥爭,但我希望這是一個相當基本的任務。R中的分檔日期

這裏是我的數據集:

> str(temp.df) 
'data.frame': 74602 obs. of 2 variables: 
$ time : POSIXct, format: "2011-04-09 03:53:20" "2011-04-09 03:53:15" "2011-04-09 03:53:07" "2011-04-09 03:52:39" ... 
$ value: num 1 1 1 1 1 1 1 1 1 1 ... 

> head(temp.df$time, n=10) 
[1] "2011-04-09 03:53:20 EDT" "2011-04-09 03:53:15 EDT" "2011-04-09 03:53:07 EDT" "2011-04-09 03:52:39 EDT" 
[5] "2011-04-09 03:52:29 EDT" "2011-04-09 03:51:56 EDT" "2011-04-09 03:51:54 EDT" "2011-04-09 03:51:46 EDT" 
[9] "2011-04-09 03:51:44 EDT" "2011-04-09 03:51:26 EDT" 

爲了方便...

> dput(head(temp.df$time, n=10)) 
structure(c(1302335600, 1302335595, 1302335587, 1302335559, 1302335549, 
1302335516, 1302335514, 1302335506, 1302335504, 1302335486), class = c("POSIXct", 
"POSIXt"), tzone = "") 

我所希望做的:

  • 我怎麼能找到多少時間是最小和最大日期/時間之間?
  • 使用1小時時間段創建我的數據摘要的最佳方式是什麼?

你能提供將大大任何幫助表示讚賞

+1

看包動物園(優秀)小插曲 - 它在那裏。 – 2011-04-11 16:05:49

+1

就我個人而言,我發現通常避免時間有時比試圖將其轉換爲R友好格式更容易。我將日期分成列,並使用原始數字,而不是日,月,年,小時,分鐘,秒。 – 2011-04-12 05:42:09

回答

6

使用適當的時間序列包zoo和/或xts。這個例子是直接從的aggregate.zoo()幫助頁面,其聚合POSIXct秒數據每10分鐘

tt <- seq(10, 2000, 10) 
x <- zoo(tt, structure(tt, class = c("POSIXt", "POSIXct"))) 
aggregate(x, time(x) - as.numeric(time(x)) %% 600, mean) 

xtsto.period()功能也是一個肯定的贏家。在SO和r-sig財務名單上有無數的例子。

+0

你能否澄清你的MOD 600在做什麼?水桶是每小時,這是我用變量x看到的。聚合線似乎對我的數據所做的所有工作是在每個桶的開始和結束處添加47秒。這是什麼意思? – Frikster 2015-07-27 17:36:55

+0

查看評論:'#聚合POSIXct秒數據每10分鐘' – 2015-07-27 17:38:06

+0

削減(時間(x),休息=「10分鐘」)是一個很好的方式來簡化聚合函數的第二個參數。在zoo軟件包的聚合函數的文檔下有這樣做的例子。 https://cran.r-project.org/web/packages/zoo/zoo.pdf – JHowIX 2016-01-15 21:19:42