使用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))
点赞
评论