R 从数据框中弹出观察值/行
我的数据如下所示:R 从数据框中弹出观察值/行,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我的数据如下所示: library(tidyverse) set.seed(1) df <- tibble( id = c("cat", "cat", "mouse", "dog", "fish", "fish", "fish"), value = rnorm(7, 100, sd = 50) ) 有更好的方法吗?您可以使用软件包pipeR在一行中完成这两个操作 library(pipeR); library(dplyr) df <- df %>>%
library(tidyverse)
set.seed(1)
df <- tibble(
id = c("cat", "cat", "mouse", "dog", "fish", "fish", "fish"),
value = rnorm(7, 100, sd = 50)
)
有更好的方法吗?您可以使用软件包
pipeR
在一行中完成这两个操作
library(pipeR); library(dplyr)
df <- df %>>% filter(id == "fish") %>>% top_n(1) %>>% (~ df2) %>% anti_join(df, .)
print(df2)
#### 1 fish 124.3715
print(df)
#### 1 mouse 58.21857
#### 2 dog 179.76404
#### 3 fish 58.97658
#### 4 cat 68.67731
#### 5 cat 109.18217
#### 6 fish 116.47539
库(pipeR);图书馆(dplyr)
df>%fish过滤器(id==“fish”)%%>>%top\u n(1)%%>>%(~df2)%%>%anti\u-join(df,.)
打印(df2)
####1鱼124.3715
打印(df)
####1只老鼠58.21857
####2只狗179.76404
####3鱼58.97658
####4类68.67731
####5第109.18217类
####6鱼116.47539
我不是吹笛手的专家,所以你可以看看,管道中的这种分配实际上是如何工作的
只需一句话:当使用
top\n
时,我建议指定值列,默认情况下它是最后一列,但您很容易忘记它:top\n(1,value)
fyi,在基数R中,您可以使用split
创建数据的列表。使用split(df,with(df,id=“fish”创建框架
s&value==max(value[id==fish])
library(pipeR); library(dplyr)
df <- df %>>% filter(id == "fish") %>>% top_n(1) %>>% (~ df2) %>% anti_join(df, .)
print(df2)
#### 1 fish 124.3715
print(df)
#### 1 mouse 58.21857
#### 2 dog 179.76404
#### 3 fish 58.97658
#### 4 cat 68.67731
#### 5 cat 109.18217
#### 6 fish 116.47539