我创建的数据通过
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