【发布时间】:2017-03-03 18:38:53
【问题描述】:
我的数据如下所示:
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)
有没有更好的办法?
【问题讨论】:
-
仅供参考,在基础 R 中,您可以使用
split执行此操作,以使用data.frames 创建list使用split(df, with(df, id == "fish" & value == max(value[id == "fish"])))