Number of households or families with children by age of children and number of workers or employment status

I've been asked to identify the number of households with children under 6 years of age with one and two incomes. I'm pretty sure it wouldn't impact the Table ID, but to be clear I'm looking for 1-year estimates at the state-level. Although I'll take 5-year estimates if 1-year are not available.

Basically, I'm looking for B23008 but with households or families as the universe instead of children. B23009 gets close but doesn't disaggregate by age of children. B11003 gets close but doesn't include number of workers or employment status. No luck as of yet via, or

Found these threads that are similar but not exactly what I'm looking for:

Household Demographics with Children under 18 [

Any insight and/or suggestions would be very greatly appreciated.

Thank you,


  • When does 2021 ACS microdata come out? I thought it was this week or next — you could stitch all that together from that (I generally wait for IPUMS which takes a little longer) 

  • I thought this was an interesting question, so I wrote a little R code to pull PUMS via tidycensus and create these estimates. If you are not familiar, this is a good walk-through of how to use tidycensus for PUMS data. If you also want standard errors with these estimates, you can download the replicate weights as well -- there are examples of how to do this in the linked tidycensus article.

    The code below uses 2019 PUMS data, but it looks like 2021 1-year PUMS is set to be released later this week. This code should work exactly the same if you change the year to 2021. Also, I choose to use the ESR (employment status variable) to find people in the household who are employed, but depending on how you want to calculate this, you could use WAGP (person wages) or another measure to identify how many household members have incomes.


    # get pums data from api
    pums variables = c("AGEP", "ESR"), # person age and employment status
      state = "VT",
      year = 2019,
      survey = "acs1"

    # aggregate to hh-level
      filter(!str_detect(SERIALNO, "GQ")) |> # drop group quarters
      group_by(SERIALNO, WGTP) |>
      filter(any(AGEP <= 6)) |> # keep only hhs with a 6 year old or younger
        n_tot = n(), # hh size
        n_6_under = sum(AGEP <= 6), # number under 6 in hh
        n_emp = sum(ESR %in% c("1", "2", "4")) # number of employed people in hh
      ) |>

    # count households by number of people employed
    pums_by_hh |>
      count(n_emp, wt = WGTP)

    # A tibble: 6 × 2
      n_emp      n

    1     0   1033
    2     1   9587
    3     2  17137
    4     3   1220
    5     4     66
    6     6    186

  • Thank you, Tim. I'll look into this. Greatly appreciated.

  • Matt,

    Thank you very much for your insight and the example code. I am a beginner with R but will review the information that you linked and take a swing. Thank you again very much for your assistance. It is very greatly appreciated.