从融化的数据集中返回足球比赛的获胜者

时间:2016-04-03 18:44:43

标签: r data.table

例如,我有一个足球结果的“融化”数据集如下:

library(data.table)
match.data <- "
game,team,score
1,newcastle,3
1,aston villa,2
2,chelsea,1
2,fulham,1
3,leicester,28
3,man city,0
"
DT <- data.table(read.csv(textConnection(match.data)))

每一行都会给出比赛中其中一支球队得分的进球数。我想制作一个谁赢得比赛的数据集(NA,如果它是平局)。对于我的例子,这将产生:

   game    winner
1:    1 newcastle
2:    2        NA
3:    3 leicester

其次,我如何用英语描述我想做的事情!?!我按照游戏进行分组,并返回与其分数的最大函数对应的团队名称。我不知道如何正确描述这个操作,所以不得不使用一个例子!

虽然我想要使用data.table的解决方案,但dplyr(甚至是基数R!)也是可以接受的。我使用data.table进行说明。

1 个答案:

答案 0 :(得分:4)

如果team存储为character

,则此方法有效
DT[ , if (diff(score) == 0) NA_character_ else team[which.max(score)], by = game]

如果NA_integer_存储为team,则更改为factor