Для следующего примера:устанавливающих первый раз все игрок сыграли два, три, ... игры в R
set.seed(24)
D <- data.frame(Team=sample(LETTERS[1:6],100,TRUE),stringsAsFactors=FALSE)
Если я хочу, чтобы найти первую строку, в которой все игроки имели 1 оборот, то следующие работы:
max(match(unique(D$Team),D$Team))
# [1] 18
но что, если я хочу, чтобы найти первую строку, когда команды играли 2 игры, или 3 игры или больше? Я застрял на том, как это сделать, я думаю, что я бы искал первый индекс, i
, в котором все элементы table(D$Team)[1:i]
больше 2, 3, 4. Но это довольно медленно и неуклюже.
'sapply (1: 4, функция (х) which.max (cumsum (пр (seq_along (D $ команды), D $ Команда, ПОТЕХИ = seq_along) = = x))) 'возвращает индексы, т. е.' [1] 18 33 41 42', но мне нравится идея @ dig – rawr