2014-04-07 33 views
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年,阿拉巴馬州有多少球員在這四個類別中進行平均。但是我需要阿拉巴馬州和其他學校每年的這些數字。我認爲應該使用某種形式的應用函數,但我不確定。

回答

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