Extraiga la fila correspondiente al valor mínimo de una variable por grupo
Deseo (1) agrupar datos por una variable (State
), (2) dentro de cada grupo encuentre la fila del valor mínimo de otra variable (Employees
) y (3) extraer toda la fila.
(1) y (2) son frases sencillas, y creo que (3) también debería serlo, pero no puedo entenderlo.
Aquí hay un conjunto de datos de muestra:
> 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"), c,lass = "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))
Calcularmin
por grupo es fácil, usandoaggregate
:
> aggregate(Employees ~ State, data, function(x) min(x))
State Employees
1 AK 24
2 RI 19
...odata.table
:
> library(data.table)
> DT <- data.table(data)
> DT[ , list(Employees = min(Employees)), by = State]
State Employees
1: AK 24
2: RI 19
Pero, ¿cómo extraigo toda la fila correspondiente a estosmin
valores, es decir, también incluidosCompany
¿en el resultado?