I must be missing something really basic here, but how can I contract the frequencies of multiple categorical variables that have the same levels in a single line of code?
For example, I want to transform this dataset:
Into a dataset with the simple counts, one row per level:
Something really inefficient would be the following, but what very basic command am I missing to do this quickly?
For example, I want to transform this dataset:
Code:
clear set obs 20 gen id = _n set seed 1234 gen year1 = round(runiform(1, 3)) set seed 19283 gen year2 = round(runiform(1, 3)) set seed 91827 gen year3 = round(runiform(1, 3)) label define categories 1 "Low" 2 "Medium" 3 "High" label values year* categories
Code:
Category year1 year2 year3 Low 8 1 5 Medium 2 10 9 High 10 9 6
Code:
foreach var of varlist year* { preserve contract `var', freq(`var'_count) rename `var' category save `var', replace restore } use year1, clear merge 1:1 category using year2, nogen merge 1:1 category using year3, nogen
Comment