Here is a quick reprex and a possible answer:
suppressPackageStartupMessages(library(tidyverse))
set.seed(1234)
# generate sample data
sleep_cleaned <- tibble(
marital = sample(c("Married", "Divorced", "Widowed"), 50, T),
genhlth = sample(c("Excelent", "Very Good", "Fair"), 50, T),
id = sample(1:1000, 50, T))
# generate frequency table
sleep_cleaned %>%
count(marital, genhlth) %>%
group_by(marital) %>%
mutate(prop = n / sum(n)) %>%
select(-n) %>%
spread(key = genhlth, value = prop)
#> # A tibble: 3 x 4
#> # Groups: marital [3]
#> marital Excelent Fair `Very Good`
#> * <chr> <dbl> <dbl> <dbl>
#> 1 Divorced 0.400 0.267 0.333
#> 2 Married 0.609 0.174 0.217
#> 3 Widowed 0.500 0.417 0.0833