首页 > 解决方案 > 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
)

我想添加一个d包含按满足条件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
)

我怎样才能做到这一点?(理想情况下使用dplyr

标签: rdplyr

解决方案


使用的dplyr解决方案first

df %>% 
  group_by(a) %>%
  mutate(d = first(c[b==1])) %>%
  ungroup()

推荐阅读