2011-09-26 143 views
3

我試圖通過讀取我的CSV文件來繪製數據,其中包含一些按每秒記錄的值。我希望R將數據彙總到每分鐘的基礎上,以便我可以使用plot(TIME,VALUE.)繪製每分鐘數據。我的CSV文件包含這樣的內容;使用R彙總數據

Store No.,Date,Time,Watt 
33,2011/09/26,09:11:01,0.0599E+03 
34,2011/09/26,09:11:02,0.0597E+03 
35,2011/09/26,09:11:03,0.0598E+03 
36,2011/09/26,09:11:04,0.0596E+03 
37,2011/09/26,09:11:05,0.0593E+03 
38,2011/09/26,09:11:06,0.0595E+03 
39,2011/09/26,09:11:07,0.0595E+03 
40,2011/09/26,09:11:08,0.0595E+03 
41,2011/09/26,09:11:09,0.0591E+03 

我在每分鐘計算的麻煩聚集的時間和瓦特列,因爲我是一個新手,R.任何幫助將高度讚賞。

+5

搜索r-help和/或StackOverflow以查找涉及動物園包和聚合的答案。這已經被解決了一百次。或者只是安裝動物園並閱讀其四個小插曲,也許從已發表論文的更新版本開始。 –

+0

其實我試着搜索StackOverflow,但找不到類似的問題來解決時間列w.r.t.第二列。 :( –

回答

5

假設商店號是無關緊要的,改變在問題中示出的示例性數據的最後三行是09:12:..而非09:11:..所以我們至少兩種不同的分:

# create test data 

Lines <- "Store No.,Date,Time,Watt 
33,2011/09/26,09:11:01,0.0599E+03 
34,2011/09/26,09:11:02,0.0597E+03 
35,2011/09/26,09:11:03,0.0598E+03 
36,2011/09/26,09:11:04,0.0596E+03 
37,2011/09/26,09:11:05,0.0593E+03 
38,2011/09/26,09:11:06,0.0595E+03 
39,2011/09/26,09:12:07,0.0595E+03 
40,2011/09/26,09:12:08,0.0595E+03 
41,2011/09/26,09:12:09,0.0591E+03" 
cat(Lines, "\n", file = "data.txt") 

# read in aggregating at the same time 

library(zoo) 
library(chron) 
z <- read.zoo("data.txt", header = TRUE, sep = ",", index = 2:3, 
    FUN = paste, FUN2 = function(x) trunc(as.chron(x), "00:01:00"), 
    aggregate = mean)[, -1] 

這裏FUN施加到由index指定的列。它將它們粘貼在一起,然後FUN2應用於FUN的結果創建日期/時間chron。最後用FUN2相同值的行再彙總服用Watt奉獻的意思是:

> z 
(09/26/11 09:11:00) (09/26/11 09:12:00) 
      59.63333   59.36667 

根據什麼是想要的aggregate參數可能被更改爲aggregate = function(x) tail(x, 1)適當位置中顯示的aggregate說法。

欲瞭解更多信息和示例,加載動物園包,並在?read.zoo?aggregate.zoovignette("zoo-read")以及其他短片和幫助文件。

更新:通過使用FUN2參數略微簡化。不知道,但read.zoo論點 可能不存在在這個問題首次回答時。

+0

非常感謝!!!你讓我的一天!:)作品像一個魅力! –