/* parqit keep - Keep, drop, order, sort, or rename variables; drop duplicates *! VERSION 0.1.37 07sep2026 User > parqit > Keep, drop, order, sort, or rename variables... Launch directly with: db parqit_vars (menu installed by: parqit menu) Builds parqit keep / drop / order / sort / gsort / rename / duplicates drop. Populate fills the variable pickers from the current view (parqit ds). These verbs are lazy: they change the view's plan, not the data in memory. */ VERSION 16.0 INCLUDE _std_wide DEFINE _dlght 385 INCLUDE header HELP hlp1, view("help parqit##verbs") RESET res1 SCRIPT PREINIT BEGIN create STRING dlgname dlgname.storeDialogClassName create DOUBLE pq_populate_error END PROGRAM POSTINIT_PROGRAM BEGIN call program main_mode call program main_context END DIALOG main, label("parqit keep - Keep, drop, order, sort, or rename variables; drop duplicate observations") /// tabtitle("Main") BEGIN RADIO rb_keep _lft _top _lw80 ., /// first /// onclickon(program main_mode) /// label("Keep only these variables (keep)") BUTTON bu_pop _rj80 @ 80 ., /// onpush(program main_populate) /// tooltip("Populate the comboboxes with the variable names of the current view") /// label("Populate") RADIO rb_drop _lft _ss _iwd ., /// onclickon(program main_mode) /// label("Drop these variables (drop)") RADIO rb_order @ _ss @ ., /// onclickon(program main_mode) /// label("Move these variables to the front (order)") RADIO rb_sort @ _ss @ ., /// onclickon(program main_mode) /// label("Sort by these variables, ascending (sort)") RADIO rb_gsort @ _ss @ ., /// onclickon(program main_mode) /// label("Sort with a + or - prefix per variable, for example -wage id (gsort)") TEXT tx_vars _ilft _ms _ibwd ., /// label("Variables:") COMBOBOX cb_vars @ _ss @ ., /// append /// dropdown /// contents(vv_list) /// error("Variables") /// label("Variables") RADIO rb_rename _lft _ls _iwd ., /// onclickon(program main_mode) /// label("Rename variables (rename)") TEXT tx_old _ilft _ss 270 ., /// label("Existing variable names:") TEXT tx_new _lft2 @ _cwd1 ., /// label("New variable names:") COMBOBOX cb_old _ilft _ss 270 ., /// append /// dropdown /// contents(vv_list) /// error("Existing variable names") /// label("Existing variable names") EDIT ed_new _lft2 @ _cwd1 ., /// error("New variable names") /// label("New variable names") RADIO rb_dupdrop _lft _ls _iwd ., /// last /// onclickon(program main_mode) /// label("Drop duplicate observations (duplicates drop)") TEXT tx_keys _ilft _ss _ibwd ., /// label("Key variables (leave empty to compare entire observations):") COMBOBOX cb_keys @ _ss @ ., /// append /// dropdown /// contents(vv_list) /// label("Key variables") CHECKBOX ck_force @ _ms @ ., /// option(force) /// label("Force the drop, even though information may be lost (required with key variables; sort the view first)") TEXT tx_context _lft 345 470 ., label("Current view: refresh to check") BUTTON bu_context _rj80 @ 80 ., label("Refresh") onpush(program main_populate) END PROGRAM main_context BEGIN put "parqit _dlgcontext " put dlgname stata hidden queue clear END LIST vv_list BEGIN END PROGRAM main_mode BEGIN call main.tx_vars.disable call main.cb_vars.disable call main.tx_old.disable call main.cb_old.disable call main.tx_new.disable call main.ed_new.disable call main.tx_keys.disable call main.cb_keys.disable call main.ck_force.disable if main.rb_keep | main.rb_drop | main.rb_order | main.rb_sort | main.rb_gsort { call main.tx_vars.enable call main.cb_vars.enable } if main.rb_rename { call main.tx_old.enable call main.cb_old.enable call main.tx_new.enable call main.ed_new.enable } if main.rb_dupdrop { call main.tx_keys.enable call main.cb_keys.enable call main.ck_force.enable } END PROGRAM main_populate BEGIN call program main_context call pq_populate_error.setvalue 0 put "parqit _dlgvars " put dlgname put " vv_list" stata hidden immediate if pq_populate_error { stopbox stop "Unable to get the variable names of the current view." /// "Open a view first (User > parqit > Read data...)." } call main.cb_vars.repopulate call main.cb_old.repopulate call main.cb_keys.repopulate END PROGRAM command BEGIN if main.rb_keep { require main.cb_vars put "parqit keep " main.cb_vars } if main.rb_drop { require main.cb_vars put "parqit drop " main.cb_vars } if main.rb_order { require main.cb_vars put "parqit order " main.cb_vars } if main.rb_sort { require main.cb_vars put "parqit sort " main.cb_vars } if main.rb_gsort { require main.cb_vars put "parqit gsort " main.cb_vars } if main.rb_rename { require main.cb_old require main.ed_new put "parqit rename (" main.cb_old ") (" main.ed_new ")" } if main.rb_dupdrop { put "parqit duplicates drop" if main.cb_keys { put " " main.cb_keys } beginoptions option main.ck_force endoptions } END