这是一个来自 R 菜鸟的简单问题。我需要根据年销售额对代表绩效进行分位数,但数据是按季度提供的。有人可以帮我优化代码。
Rep Quarter Sales
1 100 1 25
2 100 2 32
3 100 3 40
4 100 4 52
5 101 1 40
6 101 2 23
7 101 3 37
8 101 4 61
这是一个来自 R 菜鸟的简单问题。我需要根据年销售额对代表绩效进行分位数,但数据是按季度提供的。有人可以帮我优化代码。
Rep Quarter Sales
1 100 1 25
2 100 2 32
3 100 3 40
4 100 4 52
5 101 1 40
6 101 2 23
7 101 3 37
8 101 4 61
这确实是在猜测,因为您的问题太模糊了-但听起来您可以使用aggregate
.
set.seed(1)
example <- data.frame(Rep=rep(100:104,each=4),
Quarter=rep(1:4,5),
Sales=sample(100,20,replace=TRUE))
> head(example)
Rep Quarter Sales
1 100 1 27
2 100 2 38
3 100 3 58
4 100 4 91
5 101 1 21
6 101 2 90
> aggregate(example$Sales,by=list(Rep=example$Rep),summary)
Rep x.Min. x.1st Qu. x.Median x.Mean x.3rd Qu. x.Max.
1 100 27.00 35.25 48.00 53.50 66.25 91.00
2 101 21.00 55.50 78.50 68.25 91.25 95.00
3 102 7.00 15.25 19.50 27.25 31.50 63.00
4 103 39.00 47.25 59.50 58.75 71.00 77.00
5 104 39.00 63.75 75.00 72.25 83.50 100.00
或使用公式方法(感谢@Ferdinand):
> aggregate(Sales ~ Rep,summary,data=example)
Rep Sales.Min. Sales.1st Qu. Sales.Median Sales.Mean Sales.3rd Qu. Sales.Max.
1 100 27.00 35.25 48.00 53.50 66.25 91.00
2 101 21.00 55.50 78.50 68.25 91.25 95.00
3 102 7.00 15.25 19.50 27.25 31.50 63.00
4 103 39.00 47.25 59.50 58.75 71.00 77.00
5 104 39.00 63.75 75.00 72.25 83.50 100.00
您还可以使用以下方法非常轻松地绘制数据boxplot
:
boxplot(example$Sales~example$Rep)