0

我目前有一个看起来像这样的数据框...

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 个类别中平均有多少球员。但是对于阿拉巴马州和其他相关学校,我每年都需要这些数字。我认为应该使用某种形式的应用函数,但我不确定。

4

1 回答 1

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
于 2014-07-14T17:27:37.533 回答