Требование не очень понятно, но обновление одного столбца на основе значений другого можно выполнить с помощью mutate, как показано ниже:
df %>% group_by(X2) %>% mutate(Y=ifelse(X2==1, 2.4, ifelse(X2==6, 1.7, 0)))
Дает вывод:
X1 X2 Y
1 9 1 2.4
2 7 2 0
3 3 3 0
4 5 4 0
5 8 5 0
6 3 6 1.7
7 9 1 2.4
8 7 2 0
9 3 3 0
10 5 4 0
11 8 5 0
12 3 6 1.7