Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧分组并使用apply_R_Dataframe_Apply_Tapply - Fatal编程技术网

R 将数据帧分组并使用apply

R 将数据帧分组并使用apply,r,dataframe,apply,tapply,R,Dataframe,Apply,Tapply,我现在有一个数据框,看起来像这样 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

我现在有一个数据框,看起来像这样

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函数,但我不确定。

如果我正确理解了你的问题,你应该先查看
cut
,然后查看
aggregate
(或
tapply
),甚至可能查看
table

以下是我将如何继续:

添加带有
cut
结果的列

mydf$AP <- with(mydf, cut(AveragePoints, c(0, 4.1, 9.1, 14.1)))
但是,
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
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