2013-11-27 4 views
1

У меня есть кадр данных всех результатов футбольного сезона, в кадре данных, который называется new. Я хочу извлечь последние 5 игр всех команд домой и прочь. Переменная home является столбец 1 и away переменная колонка 2.Подмножество последних значений N из кадра данных, R

Say есть 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)) 
Смежные вопросы