在具有名称的数据框架上使用R聚合函数

时间:2014-06-12 18:36:47

标签: r

我有一个以下形式的数据框:

DF:

RepName, Discount
Bob,Smith , 5383.24
Johh,Doe ,  30349.21
...

重复这些名字。在df中,RepName是一个因子,Discount是数字。我想计算每个RepName的平均值。我似乎无法使汇总陈述正确。

我试过了:

#This doesn't work
repAggDiscount <- aggregate(repdf,  by = repdf$RepName, FUN = mean)

#Not what I want:
repAggDiscount <- aggregate(repdf,  by = list(repdf$RepName), FUN = mean)

我也尝试了以下内容:

repnames <- lapply(repdf$RepName, toString)
repAggDiscount <- aggregate(repdf,  by = repnames, FUN = mean)

但是这给我一个长度不匹配......

我已经阅读了帮助,但是这个应该如何适用于我的数据的示例将会有很长的路要走...谢谢!

1 个答案:

答案 0 :(得分:1)

我在这里发布了@ AnandaMahto的回答来解决这个问题。您可以使用公式语法

aggregate(Discount ~ RepName, repdf, mean)

或者您可以使用by=语法

repAggDiscount <- aggregate(repdf$Discount, by = list(repdf$RepName), FUN = mean)

您的语法问题在于您尝试聚合整个data.frame,其中包含RepName列,其中mean没有意义

你也可以

repAggDiscount <- aggregate(repdf[,-1], by = repdf[,1,drop=F], FUN = mean)

更接近矩阵式语法。