Extrahieren Sie die Zeile, die dem Mindestwert einer Variablen entspricht, nach Gruppe
Ich möchte (1) Daten nach einer Variablen gruppieren (State
), (2) innerhalb jeder Gruppe die Zeile mit dem Mindestwert einer anderen Variablen finden (Employees
) und (3) extrahieren die gesamte Zeile.
(1) und (2) sind einfache Einzeiler, und ich denke, (3) sollte es auch sein, aber ich kann es nicht verstehen.
Hier ist ein Beispieldatensatz:
> 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))
Berechnungmin
von Gruppe ist einfach, mitaggregate
:
> aggregate(Employees ~ State, data, function(x) min(x))
State Employees
1 AK 24
2 RI 19
...oderdata.table
:
> library(data.table)
> DT <- data.table(data)
> DT[ , list(Employees = min(Employees)), by = State]
State Employees
1: AK 24
2: RI 19
Aber wie extrahiere ich die gesamte Zeile, die diesen entspricht?min
Werte, d. h. auch einschließlichCompany
im Ergebnis?