TIdyverse мутирует, используя значение из столбца, чтобы ссылаться на другое значение столбца, возможно, в другой строке

Я создал тиббл таким образом:

library(tidyverse) 
set.seed(68) 
a <- c(1, 2, 3, 4, 5) 
b <- runif(5) 
c <- c(1, 3, 3, 3, 1)
tib <- tibble(a, b, c)

который производит это

tib
# A tibble: 5 x 3
      a     b     c
  <dbl> <dbl> <dbl>
1     1 0.924     1
2     2 0.661     3
3     3 0.402     3
4     4 0.637     3
5     5 0.353     1

Я хотел бы добавить еще один столбец, d, который представляет собой значение b в соответствии со значением a, указанным в столбце c. Результирующий фрейм данных должен выглядеть так:

      a     b     c     d
  <dbl> <dbl> <dbl> <dbl>
1     1 0.924     1 0.924
2     2 0.661     3 0.402
3     3 0.402     3 0.402
4     4 0.637     3 0.402
5     5 0.353     1 0.924

Спасибо, что посмотрели!


person zazizoma    schedule 14.09.2020    source источник
comment
В base R вы должны использовать tib$d <- tib$b[tib$c]   -  person Duck    schedule 15.09.2020


Ответы (1)


Используйте c для индексации нужной строки b:

tib %>% mutate(d = b[c])
      a     b     c     d
  <dbl> <dbl> <dbl> <dbl>
1     1 0.924     1 0.924
2     2 0.661     3 0.402
3     3 0.402     3 0.402
4     4 0.637     3 0.402
5     5 0.353     1 0.924
person eipi10    schedule 14.09.2020