如何让dplyr`pull()`识别R中的分组?

如何让dplyr`pull()`识别R中的分组?,r,dplyr,grouping,R,Dplyr,Grouping,下面是我对代码的尝试,我知道它不起作用,因为我的dplyr::pull()不是(由我)以我想要的方式编写的。如何让dplyr::pull()识别我想要的分组,或者也许有更好的方法来解决我的问题 #> # A tibble: 4 x 3 #> col1 col2 col3 #> <chr> <dbl> <dbl> #> 1 a 2 2 #> 2 a NA 2 #> 3

下面是我对代码的尝试,我知道它不起作用,因为我的
dplyr::pull()
不是(由我)以我想要的方式编写的。如何让
dplyr::pull()
识别我想要的分组,或者也许有更好的方法来解决我的问题

#> # A tibble: 4 x 3
#>   col1   col2  col3
#>   <chr> <dbl> <dbl>
#> 1 a         2     2
#> 2 a        NA     2
#> 3 b        10    10
#> 4 b         8    10
df%>%
分组依据(col1)%>%
突变(col3=top_n(,1,col2)%>%pull(col2))
#>#tibble:4 x 3
#>#组:col1[2]
#>col1 col2 col3
#>     
#>1 a 2 2
#>2 a NA 10
#>3 b 10 2
#>4 b 8 10

你就快到了。要使用的函数是
max
,它在删除
NA
s后提取
max

df%>%
分组依据(col1)%>%
突变(col3=max(col2,na.rm=TRUE))
#一个tibble:4x3
#分组:col1[2]
#col1 col2 col3
#    
#1 a 2 2
#2 a NA 2
#3 b 10 10
#4 b 8 10

我认为在基本函数足够的地方尝试使用
dplyr
函数会把你弄得一团糟
top\u n
返回一个数据帧如果您只需要
col2
的1个最大值,为什么不只
max(col2)
pull
与刚才的
$
[[
相同,这里也不需要
#> # A tibble: 4 x 3
#>   col1   col2  col3
#>   <chr> <dbl> <dbl>
#> 1 a         2     2
#> 2 a        NA     2
#> 3 b        10    10
#> 4 b         8    10
df %>% 
  group_by(col1) %>% 
  mutate(col3 = top_n(., 1, col2) %>% pull(col2))
#> # A tibble: 4 x 3
#> # Groups:   col1 [2]
#>   col1   col2  col3
#>   <chr> <dbl> <dbl>
#> 1 a         2     2
#> 2 a        NA    10
#> 3 b        10     2
#> 4 b         8    10