You need to group_by the Job column, then count the Gender in each Job. After that, transform the dataframe into a "wide" format by expanding the count result.
library(tidyverse)
df %>%
group_by(Job) %>%
count(Gender) %>%
pivot_wider(names_from = Gender, values_from = n, values_fill = 0) %>%
ungroup()
# A tibble: 3 × 3
Job Male Female
<chr> <int> <int>
1 CEO 1 0
2 Manager 2 1
3 Supervisor 0 1
Or more simply, a single table function.
table(df$Job, df$Gender)
Female Male
CEO 0 1
Manager 1 2
Supervisor 1 0