使用mutate进行行和列索引编制和分组依据

我想使用dplyr创建一个变量,该变量采用以另一个变量为条件的值。

请参见下面的示例。

data.frame(list(group=c('a','a','b','b'),
                time=c(1,2,1,2),
                value = seq(1,4,1))

我想创建一个变量“基准”,它接受时间= 1并按组的变量“值”的内容。这样,所需的输出将是

data.frame(list(group=c('a','a','b','b'),
            time=c(1,2,1,2),
            value = seq(1,4,1),
            baseline = c(1,1,3,3))) 

试图通过索引运行以下代码,但显然在某处出错

 x <- data.frame(list(group=c('a','a','b','b'),
                time=c(1,2,1,2),
                value = seq(1,4,1))


 x %>% group_by(group) %>% 
      mutate(baseline = .[[.$time==1,.$value]])

谢谢

评论
  • Dear
    Dear 回复

    We can use which.min

    library(dplyr)
    df1 %>% 
       group_by(group) %>%
        mutate(baseline = value[which.min(time)])
    # A tibble: 4 x 4
    # Groups:   group [2]
    #  group  time value baseline
    #  <chr> <dbl> <dbl>    <dbl>
    #1 a         1     1        1
    #2 a         2     2        1
    #3 b         1     3        3
    #4 b         2     4        3
    

    and if it is already ordered by 'time', then simply use first

    df1 %>% 
       group_by(group) %>%
       mutate(baseline = first(value))
    

    数据

    df1 <-  data.frame(group=c('a','a','b','b'),
                  time=c(1,2,1,2),
                value = seq(1,4,1))