我目前有一个看起来像这样的数据框......
Year School AveragePoints
2012-2013 Alabama 2.5
2012-2013 Alabama 5.4
2012-2013 Alabama 10.4
2012-2013 Alabama 1.2
2012-2013 Alabama 9.2
2012-2013 Alabama 7.3
每一行代表该队伍当年的一名球员。因此,第一排意味着2012 - 2013年阿拉巴马州的一名球员平均每年得到2.5分。数据框架比这长得多,有更多的团队,而且这些年份持续到1997 - 1998年。我想知道如何找出每所学校每年平均在0-4,4.1-9,9.1-14和> 14.1之间的球员数量。换句话说,对于2012 - 2013年,阿拉巴马州有4个类别的平均玩家数量。但我需要每年为阿拉巴马州和其他相关学校提供这些数字。我认为应该使用某种形式的apply函数,但我不确定。
答案 0 :(得分:0)
如果我正确理解了您的问题,您应首先考虑cut
,然后进入aggregate
(或tapply
)或甚至table
。
以下是我将如何继续:
添加包含cut
结果的列。
mydf$AP <- with(mydf, cut(AveragePoints, c(0, 4.1, 9.1, 14.1)))
这是table
方法:
table(mydf[c("AP", "Year", "School")])
# , , School = Alabama
#
# Year
# AP 2012-2013
# (0,4.1] 2
# (4.1,9.1] 2
# (9.1,14.1] 2
但是,aggregate
的输出可能是一种更有用的格式。
aggregate(. ~ Year + School + AP, mydf, length)
# Year School AP AveragePoints
# 1 2012-2013 Alabama (0,4.1] 2
# 2 2012-2013 Alabama (4.1,9.1] 2
# 3 2012-2013 Alabama (9.1,14.1] 2