Мы могли бы использовать which.max
, чтобы найти индекс максимального значения в столбце "spell length"
и использовать его для подмножества строки набора данных
dat[which.max(dat[[2]]),, drop = FALSE]
Если существует несколько лет,затем извлеките часть 'year' как переменную группировки, которая будет использоваться в ave
для создания логического индекса для поднабора строк набора данных
grp <- format(as.Date(dat$start.date), "%Y")
i1 <- with(dat, ave(`spell length`, grp, FUN = max) == `spell length`)
dat[i1, , drop = FALSE]