die ersten und letzten Werte in der Gruppe – dplyr group_by mit last() und first()

Den code unten sollten gruppieren Sie die Daten nach Jahr und dann erstellen Sie zwei neue Spalten mit den ersten und den letzten Wert jedes Jahr.

library(dplyr)

set.seed(123)

d <- data.frame(
    group = rep(1:3, each = 3),
    year = rep(seq(2000,2002,1),3),
    value = sample(1:9, r = T))

d %>% 
    group_by(group) %>%
    mutate(
        first = dplyr::first(value),
        last = dplyr::last(value)
    )

Aber es funktioniert nicht wie es sollte. Das erwartete Ergebnis wäre

  group  year value first  last
  <int> <dbl> <int> <int> <int>
1     1  2000     3     3     4
2     1  2001     8     3     4
3     1  2002     4     3     4
4     2  2000     8     8     1
5     2  2001     9     8     1
6     2  2002     1     8     1
7     3  2000     5     5     5
8     3  2001     9     5     5
9     3  2002     5     5     5

Doch, bekomme ich diese (es wird der erste und der Letzte Wert über die gesamte Daten-frame, der nicht nur die Gruppen):

  group  year value first  last
  <int> <dbl> <int> <int> <int>
1     1  2000     3     3     5
2     1  2001     8     3     5
3     1  2002     4     3     5
4     2  2000     8     3     5
5     2  2001     9     3     5
6     2  2002     1     3     5
7     3  2000     5     3     5
8     3  2001     9     3     5
9     3  2002     5     3     5
Es funktioniert für mich: ich bekomme eine Spalte mit dem ersten Wert durch die Gruppe und eine mit dem letzten Wert von der Gruppe.
Konnten Sie die version von dplyr
Wollen Sie summarize statt mutieren?
Meine Vermutung ist eine Duplikat, dass Sie versehentlich mit plyr::mutate statt dplyr::mutate. Jedoch werden "funktioniert nicht wie gedacht" ist so vage ist die Beschreibung, dass es unmöglich zu wissen...
vielen Dank an alle! @Gregor, das Problem gelöst! auch ich habe aktualisiert die Frage, um genauer zu sein wrt erwartete Ergebnis vs. tatsächliche Ergebnis.

InformationsquelleAutor phillyooo | 2017-03-07

Schreibe einen Kommentar