【发布时间】:2015-08-04 18:34:44
【问题描述】:
我有一个数据框 df1:
number=c(4,3,2,3,4,1)
year=c("2000","2000","2000", "2015", "2015", "2015")
items=c(12, 10, 15, 5, 10, 7)
df1=data.frame(number, year, items)
setDT(df1)[, Prop := number/sum(number), by = year]
看起来像这样:
number year items Prop
1: 4 2000 12 0.4444444
2: 3 2000 10 0.3333333
3: 2 2000 15 0.2222222
4: 3 2015 5 0.3750000
5: 4 2015 10 0.5000000
6: 1 2015 7 0.1250000
我想得到每年项目数量的平均值,所以我尝试使用这个函数:
mean.df1=aggregate((df1$number*df1$Prop),list(df1$year), mean)
但它返回了错误的平均值。我希望它返回:
Group.1 x
1 2000 2.918918
2 2015 2.296296
其中 Group.1 是年份,x 是正确的平均值。
谢谢!
【问题讨论】:
-
只是
df1[, mean(number*Prop), by = year]?为什么首先在这里使用aggregate?aggregate语法对您来说是否比data.table的一些简单击键更有意义? -
您是如何获得这些结果的? 2000年平均每年2.918918的物品数量是多少??
-
考虑将您想要的输出与给定的数据相匹配,以减少混淆。