Entschuldigung, wenn dies zuvor gefragt wurde. Ich konnte keine befriedigenden Antworten finden, obwohl es sich anhört, als sollte es eine ziemlich einfache Operation sein.Anwenden von dplyr Filter-Operation auf bestimmte Zeilen, ohne andere Daten zu verlieren
Ich habe meine Daten
transition_frame name state_number lifetime
<int> <chr> <dbl> <dbl>
1 38 //Traces_exp1_tif_pair10 1 NA
2 44 //Traces_exp1_tif_pair10 2 6
3 352 //Traces_exp1_tif_pair10 3 308
4 362 //Traces_exp1_tif_pair10 4 10
5 379 //Traces_exp1_tif_pair10 5 17
6 388 //Traces_exp1_tif_pair10 6 9
Es war leicht genug, um die zeilenweise Unterschiede zwischen dem Übergangsrahmen zu berechnen, aber da es kein „Übergang“ zwischen Staat 0 und 1 ist, bricht es den Fluss.
Wie kann ich nur die erste Zeile transition_frame - 1
sein (Hinweis, es ist 37), ohne andere Daten zu berühren? Stellen Sie sich vor
,
group_by(name) %>%
filter(state_number == 1) %>%
mutate(lifetime = transition_frame - 1) %>%
unfilter() # To retrieve dropped data
, die in einer ganzen Reihe führen würde, mit der ersten Zeile berechnet und NICHT nur die erste Reihe.
transition_frame name state_number lifetime
<int> <chr> <dbl> <dbl>
1 38 //Traces_exp1_tif_pair10 1 37
2 44 //Traces_exp1_tif_pair10 2 6
3 352 //Traces_exp1_tif_pair10 3 308
4 362 //Traces_exp1_tif_pair10 4 10
5 379 //Traces_exp1_tif_pair10 5 17
6 388 //Traces_exp1_tif_pair10 6 9
Ich verstehe deine Fragen nicht wirklich, aber vielleicht suchst du nach 'coalesce'. – Axeman
Hinzugefügt etwas mehr Code. Erklärt das besser? –
fügen Sie bitte Ihre erwartete Ausgabe hinzu. – Prradep