Meine Daten sieht wie folgt aus:Pop out Beobachtung/Zeile aus einem Datenrahmen
library(tidyverse)
set.seed(1)
df <- tibble(
id = c("cat", "cat", "mouse", "dog", "fish", "fish", "fish"),
value = rnorm(7, 100, sd = 50)
)
Wie könnte ich „pop-out“, um den Spitzenwert von fish
, wie in Schritt Fisch zu einem neuen Datenrahmen und gleichzeitig entfernen es aus dem aktuellen Datenrahmen?
Das funktioniert (aber es scheint nicht, dass alle elegant):
df_store <- df %>%
filter(id == "fish") %>%
top_n(1)
df <- anti_join(df, df_store)
Gibt es einen besseren Weg?
FYI, in der Basis R, können Sie diese mit 'split' zu tun um eine 'liste' von' data.frame's mit 'split (df, mit (df, id ==" fisch "& value == max (wert [id ==" fisch "])))' 'zu erstellen –