You have a lot of options at your disposal with the tidyverse packages (e.g., dplyr, tidyr). One option is to use na_if to turn the 99s into NA and if_else to turn the 88s to 0.
I have created a fake dataset below, but if you have questions about your specific dataset, you should provide a reproducible example with your own data.
library(tidyverse)
a <- sample(x = c(1, 2, 3, 4, 99, 88), size = 30, replace = T)
b <- sample(x = c(1, 2, 3, 4, 99, 88), size = 30, replace = T)
c <- sample(x = c(1, 2, 3, 4, 99, 88), size = 30, replace = T)
df <- data.frame(a, b, c)
df
df %>%
mutate(across(everything(), ~na_if(., 99))) %>%
mutate(across(everything(), ~if_else(. == 88, 0, .)))