/****************************************************************************** Project: Immigration Data Linkage Project (ircc_link) File: S:\ircc_link\prog\gillesd\concept_samples\admission_category.sas Programmer: Gilles R. Detillieux First Created: Oct. 24, 2022 Revisions: none Input datasets: registry.ircc_legacy_landing_1985jan: IRCC landing data from 1985 to 1999 registry.ircc_landing_2000jan: IRCC landing data from 2000 to 2017 Description: This program combines the IRCC permanent resident landing datasets (legacy and current data) and categorizes immigration admission into four main groups, in a way that makes the newer categories match the legacy categories. ******************************************************************************/ options nocenter; *** Randy Wald's format to convert current landing categories to legacy names; proc format; value $imm_group 'Sponsored Family'='Family class' 'Economic'='Economic immigrants' 'Resettled Refugee & Protected Person in Canada'='Refugees' 'All Other Immigration'='Other immigrants'; run; *** Get arrival & landing data from legacy and current landing datasets; data landing; set registry.ircc_legacy_landing_1985jan (in=in_ll keep=idno arrival_dt landing_dt acqdt immigration_category4_eng_desc immigration_class_eng_desc) registry.ircc_landing_2000jan (in=in_cl keep=idno arrival_dt landing_dt acqdt application_category_id); where acqdt = '14may2019'd; * Determine immigration admission category groupings; * from either legacy or current landing data.; * Legacy landing already uses four basic categories in one text variable; * so we use a series of conversions on the current landing data to arrive; * at the same categories. We do the same for immigration class.; length imm_main_cat $60 imm_class $60; legacy = in_ll; if legacy then do; imm_main_cat = immigration_category4_eng_desc; imm_class = immigration_class_eng_desc; end; else do; *** convert appl. category to main imm. class, remove code at start; imm_main_cat = put(application_category_id, application_main_category.); imm_main_cat = left(scan(imm_main_cat, 2, '.')); *** convert main imm. class name to legacy equivalent; imm_main_cat = put(imm_main_cat, $imm_group.); *** similar conversion of imm. component description to imm. class; imm_class = put(application_category_id,IRCC_application_component_desc.); imm_class = left(scan(imm_class, 2, '.')); end; label imm_main_cat = 'Immigration Admission Category'; label imm_class = 'Immigration Class'; label legacy = 'Data came from IRCC legacy landing dataset'; run; *** report on landing categories; title 'Landed immigrants in Canada, by admission category and component class'; proc freq data=landing; tables landing_dt*imm_main_cat landing_dt*imm_class imm_main_cat*imm_class / list missing; format landing_dt year4.; run; *** a little cleanup; proc delete data=landing; run;