DATA Step, Macro, Functions and more

generate a new variable

Occasional Contributor
Posts: 6

generate a new variable

Hello. I am doing an assignment in which I am supposed to extract and download CPS data from IPUMS site 

( The variables in the data set are as follows:



Person Record

Core Demographic Variables


SEX Gender


MARST Marital status

Ethnicity/Nativity Variables

NATIVITY Foreign birthplace or parentage

HISPAN Hispanic origin

Education Variables

EDUC99 Educational attainment, 1990 categories

Work Variables

WKSWORK1 Weeks worked last year

UHRSWORK Usual hours worked per week last year
UNION Union status
PTWEEKS Weeks working part time last year

Income Variables

 INCWAGE Wage and salary income


I am having trouble executing a few steps that are required in the assignment. For example, it says to 

  1. Generate a new variable for years of education using EDUC99 variable.
  2. Generate a new variable for experience using AGE and EDUC99 variables.

What would the code look like in order to do that? Thanks!

Super User
Posts: 13,577

Re: generate a new variable

Posted in reply to graingerad12

First, have you created a SAS data set?

Also you will need to describe the contents of the variables you mention. I am guessing that the EDUC99 contains highest level of ecuation and looks something like "High School Graduate" or "GED", "Some college" "Trade school" "Bachelor'd Degree"  or similar. In which case you could make some assumptions and use IF-THEN-ELSE (or SELECT-WHEN) to do something like:


data want;

   set have;

   If Educ99 = "High School" then YearsEducation = 12;

   Else If Educ99 = "Bachelor's Degree" then YearsEducation=16;


/*and so on, but without exact values and a reasonable interpretation then that skeleton code is all I'm going suggest.*/



Without knowing what your specific uses of "experience" might be it gets a bit harder. Likely you could use values of your Age and YearsEducation combined with something like:


If age<18 and YearsEducation<12 then Experience = <some value>;


Ask a Question
Discussion stats
  • 1 reply
  • 2 in conversation