Linking Census Tract data to MSA

I downloaded census tract level data and need to link them to the MSA level for a few indicators. Is there a way I can extract data in this format or this has to be done manually? I would also need to do the same for the shapefiles as I would run some GIS analysis. Any help is very appreciated.



Most tract table data files from NHGIS include metro area codes. You can determine which field contains that code by reading the “codebook” text file that accompanies the data file. (E.g., in the most recent files, the metro area code is given in a field labeled “CBSAA”.)

NHGIS shapefiles and time series tables for tracts don’t generally include a metro area code. To get metro area codes associated with tracts in those files, you could join them to a standard “source table” file for tracts, keying on the common “GISJOIN” identifier that appears in all NHGIS files.

If you need a lookup from metro area code to metro area name, you could use a source table for metro areas (i.e., core-based statistical areas, or CBSAs), which contains both the codes and the names.

For more information about MSA definitions and delineations, and how they’ve changed over time, see this page on the Census Bureau website.

Hi Jonathan,
Thanks for the prompt reply.
I am sure to be missing something. When I download census tract-level data, I see that there is a column for CBSA, however, it does not contain any value. See the attachment please.

At this point I am more concerned about linking the CTs to their respective MSAs and I can do GISJOIN in case, as you mentioned, there is no direct association between the MSA names and codes.

Thanks for the help!

Thanks for sharing the example. I had previously checked a 2020 census file (from NHGIS dataset 2020_PL94171), and in that case, the CBSAA field contains the correct codes. I’ve now checked tract-level files from several other datasets, and it appears that, generally, tract-level files from decennial censuses (at least 1990-2020) do contain metro area codes, but tract-level files from ACS datasets do not contain metro area codes. I also confirmed that this omission is original to the source: the base ACS summary files do not include this information.

NHGIS hasn’t added any codes to the files that weren’t provided in the original files, so unfortunately, you can’t get a direct tract-to-MSA crosswalk from NHGIS files. Instead, I’d recommend using the state and county codes that are available in the tract file to link to the Census Bureau’s CBSA delineation files, which contain corresponding state and county codes.

1 Like

Thanks Jonathan,

I think I found the workaround of combining the tracts to CBSA by simply joining the two files for 2000 and 2010. This did the crosswalk that you mentioned. And then I filered out the Micro, PR etc., using the piping method. All of these are done in RStudio.

Much thanks for your help and guidance! I really appreaciate it.