Add variable attributes from an IPUMS DDI to the variables in a data.frame. This function is usually called automatically for you inside of the read_* functions (such as read_ipums_micro or read_nhgis), but they can be useful other times as well. For example, if you store the data in a database, you can store the data without attributes in the database and add them on after loading a subset into a data.frame.

  var_attrs = c("val_labels", "var_label", "var_desc")



A data.frame


An ipums_ddi object or a data.frame with the variable information (equivalent to getting ipums_var_info on a DDI).


One or more of val_labels, var_label and var_desc describing what kinds of attributes you want to add. If NULL, will not add any attributes.


A tbl_df data.frame with data and IPUMS attributes


Attribute val_labels adds the haven::labelled class attributes and the corresponding value labels for variables that have value labels.

Attribute var_label Adds a short summary of the variable's contents that to the attribute "label". This label is viewable in the RStudio Viewer.

Attribute var_desc Adds a longer summary of the variable's contents to the attribute "var_desc" when available.


  ddi_file <- ipums_example("cps_00006.xml")
  ddi <- read_ipums_ddi(ddi_file)
  cps <- read_ipums_micro(ddi, var_attrs = NULL) # Don't load with attributes
#> Use of data from IPUMS-CPS is subject to conditions including that users should
#> cite the data appropriately. Use command `ipums_conditions()` for more details.

  ipums_var_desc(cps$YEAR) # Not available
#> [1] NA

  # But, we can add on attributes after loading
  cps_with_attr <- set_ipums_var_attributes(cps, ddi)
#> [1] "YEAR reports the year in which the survey was conducted.  YEARP is repeated on person records."