我对如何采用以下方式格式化数据帧的平均值感到有点迷失:
id date quantity product
1 12-05-2015 10 apple
2 21-03-2015 12 orange
3 12-05-2015 15 orange
4 21-03-2015 16 apple
预期结果:
date quantity
21-03-2015 14
12-05-2015 12.5
我尝试将它转换为zoo对象,但后来我遇到问题,因为日期不是唯一的。
答案 0 :(得分:5)
尝试
aggregate(quantity~date, df1, mean)
# date quantity
#1 12-05-2015 12.5
#2 21-03-2015 14.0
或者
library(data.table)
setDT(df1)[, list(quantity=mean(quantity)), date]
正如评论中提到的@Alex A.在最近的data.table版本中,list(
可以替换为.(
。
答案 1 :(得分:3)
您还可以使用dplyr
包。假设您的数据框名为df
:
library(dplyr)
df %>%
group_by(date) %>%
summarize(quantity = mean(quantity))
# date quantity
# 1 12-05-2015 12.5
# 2 21-03-2015 14.0
这是按日期分组的平均数量。