Мы можем использовать mutate_at
вместе с starts_with
, чтобы выбрать имена столбцов, затем использовать if_else
library(dplyr)
df %>% mutate_at(vars(starts_with('Tri')),funs(if_else(is.na(.),average_missing,.)))
Tri_1 Tri_2 Tri_3 Tri_4 Tri_5 average_missing
1 5 33 62 80 29 0
2 1 27 55 47 8 1
3 1 6 45 112 4 1
4 0 0 3 12 21 0
5 3 35 93 36 2 2
6 0 10 54 49 11 0
7 1 18 42 48 11 1
8 0 20 51 62 9 0
9 0 25 97 119 6 0
10 2 45 95 59 6 2
Если вы хотите использовать tidyr::replace_na
, тогда вам нужно rowwise()
сначала
library(dplyr)
library(tidyr)
df %>% rowwise() %>%
mutate_at(vars(starts_with('Tri')),funs(replace_na(.,average_missing))) %>%
ungroup()