我創建的數據通過
data <- read.table(text=" Date Hour Melbourne Southern Flagstaff
1 2009-05-01 0 0 5 17
2 2009-05-01 2 0 2 1
3 2009-05-01 1 0 11 0
4 2009-05-01 3 0 3 8
5 2009-05-01 4 0 1 0
6 2009-05-01 5 0 49 79
7 2009-05-01 6 0 425 610",
header=TRUE,stringsAsFactors=FALSE)
設置你可以做的總和與功能aggregate
:
byday <- aggregate(cbind(Melbourne,Southern,Flagstaff)~Date,
data=data,FUN=sum)
library(lubridate)
bymonth <- aggregate(cbind(Melbourne,Southern,Flagstaff)~month(Date),
data=data,FUN=sum)
看?aggregate
瞭解功能較好。最後一個參數開始(因爲這使得更容易解釋)的參數執行以下操作:
FUN
是應該用於聚合的功能。我使用sum
來總結這些值,但我也可以是mean
,max
或您自己寫的一些函數。
data
用於表示我想要聚合的數據幀。
- 第一個參數告訴函數什麼我想要聚合。在
~
的左側,我指出了我想要聚合的變量。如果不止一個,則與cbind
合併。右側是數據應該被分割的變量。假設Date
意味着彙總將總結每個不同值Date
的變量。
對於按月彙總,我使用了包lubridate
中的函數month
。它符合人們的期望:它返回一個數字值,表示給定日期的月份。也許你首先需要安裝install.packages("lubridate")
。
如果你不喜歡使用lubridate,你可以做,而不是執行以下操作:
data <- transform(data,month=as.numeric(format(as.Date(Date),"%m")))
bymonth <- aggregate(cbind(Melbourne,Southern,Flagstaff)~month,
data=data,FUN=sum)
在這裏,我添加了一個新列的數據包含了一個月,然後按該列彙總。
我得到的錯誤圖書館(lubridate)線。 Doi需要手動導入包嗎? – user2787386
你先安裝了它嗎? '安裝。軟件包(「lubridate」)' –
抱歉...你需要按照@Marta Cz-C的說明安裝軟件包。 – Stibu