例如,我有一个足球结果的“融化”数据集如下:
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
进行说明。
答案 0 :(得分:4)
如果team
存储为character
:
DT[ , if (diff(score) == 0) NA_character_ else team[which.max(score)], by = game]
如果NA_integer_
存储为team
,则更改为factor
。