Dplyr - 满足条件的第一个值

Geo*_*ery 2 r dplyr

我有这个数据框

library(tidyverse)
df <- tribble(
    ~a, ~b, ~c
    , 1, 1, 1
    , 1, 0, 2
    , 1, 0, 3
    , 2, 0, 1
    , 2, 1, 2
    , 2, 1, 3
)
Run Code Online (Sandbox Code Playgroud)

我想添加一列dcontains 按满足条件a的第一个值分组,就像这样......cb == 1

tribble(
    ~a, ~b, ~c, ~d
    , 1, 1, 1, 1
    , 1, 0, 2, 1
    , 1, 0, 3, 1
    , 2, 0, 1, 2
    , 2, 1, 2, 2
    , 2, 1, 3, 2
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?(最好使用dplyr

jle*_*eur 6

解决dplyr方案使用first

df %>% 
  group_by(a) %>%
  mutate(d = first(c[b==1])) %>%
  ungroup()
Run Code Online (Sandbox Code Playgroud)