我需要汇总我的数据Kg
Data Kg
1 2013-03-01 271
2 2013-03-06 374
3 2013-03-07 51
4 2013-03-12 210
5 2013-03-13 698
6 2013-03-15 328
按周或月。我找到了这个答案here in stackoverflow,但我真的不明白答案。谁能告诉我我该怎么做呢?感谢名单
答案 0 :(得分:8)
提到的答案表明您应该使用xts
包。
library(xts)
## create you zoo objects using your data
## you replace text argument by read.zoo(yourfile, header = TRUE)
x.zoo <- read.zoo(text=' Data Kg
+ 1 2013-03-01 271
+ 2 2013-03-06 374
+ 3 2013-03-07 51
+ 4 2013-03-12 210
+ 5 2013-03-13 698
+ 6 2013-03-15 328',header=TRUE)
### then aggregate
apply.weekly(x.zoo, mean) ## per week
apply.monthly(x.zoo, mean) ## per month
请参阅??apply.xxxly
:
本质上是xts函数端点和period.apply的包装器,主要是为了方便。
答案 1 :(得分:7)
或者,您可以使用tapply
按周组申请。在这里,我使用lubridate
包从日期中提取周部分。
# fake data
df <- structure(list(Datechar = c("2013-03-01", "2013-03-06", "2013-03-07",
"2013-03-12", "2013-03-13", "2013-03-15"), Kg = c(271L, 374L,
51L, 210L, 698L, 328L)), .Names = c("Datechar", "Kg"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))
# convert character to date
df$Date <- as.Date(df$Datechar)
# calculate mean kg for each week
library(lubridate)
tapply(df$Kg, week(df$Date), mean)
tapply(df$Kg, month(df$Date), mean)