2013-11-27 28 views
1

我有一個數據幀,其中包含一個足球賽季的所有結果,數據幀爲new。我想抽出所有隊伍的最後5場比賽。 home變量是第1列,away變量是第2列。對數據幀中的最後N個值進行子集化,R

假設有20個隊名稱爲teams,每個隊名稱都是唯一的。如果這只是一個團隊,將很容易子集 - 說,如果TEAM1爲"Arsenal",使用類似

Arsenal <- "Arsenal" 
head(new[new[,1] == Arsenal | new[,2] == Arsenal,], 5) 

但我想遍歷特徵向量teams獲得最後的5個結果所有的球隊,總共20個。有人可以幫我嗎?

編輯:這是一些示例數據。作爲一個例子,我想獲得所有球隊的最後兩場比賽 - 對一個球隊進行分組很容易,但我不確定如何劃分多個球隊。

   V1   V2 V3 V4   V5 
1  Chelsea  Everton 2 1 19/05/2013 
2  Liverpool   QPR 1 0 19/05/2013 
3  Man City  Norwich 2 3 19/05/2013 
4  Newcastle  Arsenal 0 1 19/05/2013 
5 Southampton  Stoke 1 1 19/05/2013 
6  Swansea  Fulham 0 3 19/05/2013 
7  Tottenham Sunderland 1 0 19/05/2013 
8  West Brom Man United 5 5 19/05/2013 
9  West Ham  Reading 4 2 19/05/2013 
10  Wigan Aston Villa 2 2 19/05/2013 
11  Arsenal  Wigan 4 1 14/05/2013 
12  Reading Man City 0 2 14/05/2013 
13  Everton West Ham 2 0 12/05/2013 
14  Fulham Liverpool 1 3 12/05/2013 
15 Man United  Swansea 2 1 12/05/2013 
16  Norwich West Brom 4 0 12/05/2013 
17   QPR Newcastle 1 2 12/05/2013 
18  Stoke Tottenham 1 2 12/05/2013 
19 Sunderland Southampton 1 1 12/05/2013 
20 Aston Villa  Chelsea 1 2 11/05/2013 
21  Chelsea Tottenham 2 2 08/05/2013 
22  Man City West Brom 1 0 07/05/2013 
23  Wigan  Swansea 2 3 07/05/2013 
24 Sunderland  Stoke 1 1 06/05/2013 
25 Liverpool  Everton 0 0 05/05/2013 
26 Man United  Chelsea 0 1 05/05/2013 
27  Fulham  Reading 2 4 04/05/2013 
28  Norwich Aston Villa 1 2 04/05/2013 
29   QPR  Arsenal 0 1 04/05/2013 
30  Swansea Man City 0 0 04/05/2013 
31 Tottenham Southampton 1 0 04/05/2013 
32 West Brom  Wigan 2 3 04/05/2013 
33  West Ham Newcastle 0 0 04/05/2013 
34 Aston Villa Sunderland 6 1 29/04/2013 
35  Arsenal Man United 1 1 28/04/2013 
36  Chelsea  Swansea 2 0 28/04/2013 
37  Reading   QPR 0 0 28/04/2013 
38  Everton  Fulham 1 0 27/04/2013 
39  Man City West Ham 2 1 27/04/2013 
40 Newcastle Liverpool 0 6 27/04/2013 
41 Southampton West Brom 0 3 27/04/2013 
42  Stoke  Norwich 1 0 27/04/2013 
43  Wigan Tottenham 2 2 27/04/2013 
+0

您可能正在尋找'by'函數,但請在您的問題中發佈一些示例數據。 –

+0

'head'給出了前五個結果,你可能想要使用'tail'。 – TheComeOnMan

+0

抱歉忘了提及我已經安排好了,所以最近的結果出現在頂部。 –

回答

0

哪裏df是你data.frame,這將創造的20個data.frames一個清單,每一個元素是一個團隊的數據集。這也假定數據集已經排序了,因爲你提到了它。

setnames(df,c('hometeam','awayteam','homegoals','awaygoals','fixturedate')) 

allteams <- sort(unique(df$hometeam)) 

eachteamlastfive <- vector(mode = "list", length = length(allteams)) 

for (i in seq(length(allteams))) 
{ 
eachteamlastfive[[i]] <- head(df[df$hometeam==allteams[i] | df$awayteam == allteams[i], ],5) 
} 
0

看看sapply

sapply(unique(new[,1]), function(team) head(new[new[,1] == team | new[,2] == team,], 5)) 
相關問題