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
Wollen Sie
Meine Vermutung ist eine Duplikat, dass Sie versehentlich mit
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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
dplyr::mutate()
hat den trickInformationsquelleAutor phillyooo