Extrakt Zeile entsprechenden minimalen Wert einer Variablen, der durch die Gruppe

Möchte ich (1) - Gruppe-Daten von einer variable (State), (2) innerhalb jeder Gruppe finden, die die Reihe von minimum-Wert der anderen variable (Employees), und (3) extrahieren Sie die gesamte Zeile.

(1) und (2) sind einfache Einzeiler, und ich fühle mich wie (3) sollten das auch sein, aber ich kann es nicht bekommen.

Hier ist ein Beispiel-Datensatz:

> 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))

Berechnen min von der Gruppe ist einfach, mit aggregate:

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

...oder data.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 entsprechend min Werte, also auch Company im Ergebnis?

InformationsquelleAutor Ed Swindelles | 2014-06-05

Schreibe einen Kommentar