Мои данные выглядят так:
library(tidyverse)
set.seed(1)
df <- tibble(
id = c("cat", "cat", "mouse", "dog", "fish", "fish", "fish"),
value = rnorm(7, 100, sd = 50)
)
Как я могу «вытащить» верхнее значение fish
, например, переместить рыбу в новый фрейм данных и одновременно удалить его из текущего фрейма данных?
Это работает (но не кажется таким уж элегантным):
df_store <- df %>%
filter(id == "fish") %>%
top_n(1)
df <- anti_join(df, df_store)
Есть ли способ лучше?
split
, чтобы создатьlist
изdata.frame
, используяsplit(df, with(df, id == "fish" & value == max(value[id == "fish"])))
- person talat   schedule 21.10.2016