【发布时间】:2016-04-09 15:28:25
【问题描述】:
以下示例:
set.seed(24)
D <- data.frame(Team=sample(LETTERS[1:6],100,TRUE),stringsAsFactors=FALSE)
如果我想找到所有玩家都玩过一回合的第一行,那么以下工作:
max(match(unique(D$Team),D$Team))
# [1] 18
但是如果我想在球队打了 2 场、3 场或更多场比赛时找到第一行怎么办?我坚持如何做到这一点,我想我要寻找的是第一个索引i,其中table(D$Team)[1:i] 的所有元素都大于2、3、4。但这很慢而且很笨重
【问题讨论】:
-
sapply(1:4, function(x) which.max(cumsum(ave(seq_along(D$Team), D$Team, FUN = seq_along) == x)))返回索引,即[1] 18 33 41 42,但我喜欢@dig 的想法