Извлечь строку, соответствующую минимальному значению переменной, по группе

Я хочу (1) сгруппировать данные по одной переменной (State), (2) внутри каждой группы найдите строку минимального значения другой переменной (Employees) и (3) извлечь всю строку.

(1) и (2) простые однострочники, и я чувствую, что (3) тоже должно быть, но я не могу этого понять.

Вот пример набора данных:

> data
  State Company Employees
1    AK       A        82
2    AK       B       104
3    AK       C        37
4    AK       D        24
5    RI       E        19
6    RI       F       118
7    RI       G        88
8    RI       H        42

data <- structure(list(State = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
        2L), .Label = c("AK", "RI"), class = "factor"), Company = structure(1:8, .Label = c("A", 
        "B", "C", "D", "E", "F", "G", "H"), class = "factor"), Employees = c(82L, 
        104L, 37L, 24L, 19L, 118L, 88L, 42L)), .Names = c("State", "Company", 
        "Employees"), class = "data.frame", row.names = c(NA, -8L))

подсчитыватьmin по группе легко, используяaggregate:

> aggregate(Employees ~ State, data, function(x) min(x))
  State Employees
1    AK        24
2    RI        19

...или жеdata.table:

> library(data.table)
> DT <- data.table(data)
> DT[ , list(Employees = min(Employees)), by = State]
   State Employees
1:    AK        24
2:    RI        19

Но как мне извлечь всю строку, соответствующую этимmin значения, то есть также включаяCompany в результате?

Ответы на вопрос(5)

Ваш ответ на вопрос