Why don't you follow the answer in here:
???
Your data isn't correct, also this doesn't make sense.
Hb_level <- case_when(Hb >= 12 ~ "high", Hb < 12 ~ "low")
= c("high",
either you calculate the Hb_level or you define it for every sample.
I don't have the formattable package, so I leave this one out here.
When working with summarised values you need to use geom_col, or geom_bar(stat = "identity").
Anemia %>%
mutate(Hb_level = case_when(Hb >= 12 ~ "high",
TRUE ~ "low")) %>%
group_by(Hb_level) %>%
summarize(count=n()) %>%
mutate(percentages= round(count/sum(count)*100, 1)) %>%
ggplot(aes(x = 1, y=percentages,fill=Hb_level)) +
geom_col() +
coord_polar(theta = "y")