1 / 21

2014 Nordic and Baltic Stata Users Group Metting

Working sideways in Stata. Jakob Hjort DataManager, MPH Department of Cardiology Aarhus University Hospital DK-8200 Aarhus Denmark. 2014 Nordic and Baltic Stata Users Group Metting. The rectangular dataset. The rectangular dataset. Statistics. The rectangular dataset. Statistics.

harva
Download Presentation

2014 Nordic and Baltic Stata Users Group Metting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Working sideways in Stata Jakob Hjort DataManager, MPH Department of Cardiology Aarhus University Hospital DK-8200 Aarhus Denmark 2014 Nordic and Baltic Stata Users Group Metting

  2. The rectangular dataset

  3. The rectangular dataset Statistics

  4. The rectangular dataset Statistics results ”It is not the data we want it’s the ssence of data”

  5. The rectangular dataset Datamanagement

  6. The rectangular dataset Datamanagement

  7. The rectangular dataset Datamanagement Statistics

  8. The rectangular dataset - transpose? Datamanagement Statistics

  9. The rectangular dataset – subset in matrix using mata? use ”family.dta”, clear * Dataset with: fam_name, inc_mother & inc_father mata st_view(x=0,.,(”inc_mother”,”inc_father”)) income=colsum(x’)’ st_addvar(”long”,”inc_household”) st_store(.,”inc_household”,income) end list fam_name inc_mother inc_father inc_household

  10. The direct approach generate [type] newvar=exp [if] [in] Datamanagement

  11. The direct approach generate [type] newvar=exp [if] [in] Ex.: generate BMI=Weight/Height^2 Datamanagement Weight Height BMI

  12. The direct approach egen [type] newvar=fcn(arguments) [if] [in] [,options] rowtotal, rowmin, rowmax, rowfirst, rowlast, rowmean, rowmedian, rowmiss, rownonmiss, rowpctile, rowsd, concat, anycount, anymatch, anyvalue,count, diff, fill, group, iqr, kurt, max, mdev, mean, median, min, mode, mtr, pc, pctile, rank, sd, seq, skew, std, tag, total Datamanagement

  13. The direct approach egen [type] newvar=fcn(arguments) [if] [in] [,options] rowtotal, rowmin, rowmax, rowfirst, rowlast, rowmean, rowmedian, rowmiss, rownonmiss, rowpctile, rowsd, concat, anycount, anymatch, anyvalue,count, diff, fill, group, iqr, kurt, max, mdev, mean, median, min, mode, mtr, pc, pctile, rank, sd, seq, skew, std, tag, total Ex.: egen income=rowtotal(inc*) Datamanagement IncMar IncApr IncMay IncJan IncFeb income IncJun IncJul …

  14. Looking under the skirts – just for inspiration viewsource _growmin.adothe rowmin() function of egen program define _growmin version 6, missing gettoken type 0 : 0 gettoken g 0 : 0 gettoken eqs 0 : 0 syntax varlist [if] [in] [, BY(string)] if `"`by'"' != "" { _egennoby rowmin() `"`by'"' } tempvar touse mark `touse' `if' `in' quietly { gen `type' `g' = . tokenize `varlist' while "`1'"!="" { replace `g' = cond(`1' < `g',`1',`g') mac shift } } end

  15. Looking under the skirts – just for inspiration viewsource _growmin.adothe rowmin() function of egen program define _growmin version 6, missing gettoken type 0 : 0 gettoken g 0 : 0 gettoken eqs 0 : 0 syntax varlist [if] [in] [, BY(string)] if `"`by'"' != "" { _egennoby rowmin() `"`by'"' } tempvar touse mark `touse' `if' `in' quietly { 1. gen `type' `g' = . 2. tokenize `varlist' 3. while "`1'"!="" { 4. replace `g' = cond(`1' < `g',`1',`g') 5. mac shift 6. } } end 1.Initialize target variable 2.Prepare the variable-list 3.Looping: 4. In-the-loop-commands

  16.  Prepare the variable-list . local vars incJan incFeb incMar incApr incMay incJun /// incJul incAug incSep incOct incNov incDec Full specification of each and every variable – OK with 12 but what in case of hundreds? The list is stored in `vars' . unab vars: inc* . unab vars: incJan-incDec Variables can be specified with wildcards - The expanded list is stored in `vars' (unab means unabbreviate – however the command itself can’t be un-abbreviated) . ds inc* . ds incJan-incDec incJan incFeb incMar incApr incMay incJun incJul incAug incSep incOct incNov incDec Variables can be specified with wildcards - The list is stored in `r(varlist)’ Nice feature: the expanded list is shown for inspection 1.Initialize target variable 2.Prepare the variable-list 3.Looping: 4. In-the-loop-commands

  17. Looping ”foreach” is the quickest and the most transparent loop command foreach lvar in incJan incFeb { // do stuff with "`lvar'” } unab lvar: inc* foreach lvar in `lvar' { // do stuff with "`lvar'” } ds inc* foreach lvar in `r(varlist)' { // do stuff with "`lvar'” } 1.Initialize target variable 2.Prepare the variable-list 3.Looping: 4. In-the-loop-commands

  18. Looping Hold + press … on numeric keypad Left single-quote alt 0 ` = 9 6 ”foreach” is the quickest and the most transparent loop command foreach lvar in incJan incFeb { // do stuff with "`lvar'” } Hold + press … on numeric keypad Right single-quote ’ 0 alt = 3 9 unab lvar: inc* foreach lvar in `lvar' { // do stuff with "`lvar'” } ds inc* foreach lvar in `r(varlist)' { // do stuff with "`lvar'” } 1.Initialize target variable 2.Prepare the variable-list 3.Looping: 4. In-the-loop-commands

  19.  In the loop generate minimum=. unab vars: inc* foreach lvar in `vars' { replace minimum = cond(`lvar' < minimum,`lvar’,minimum) } generate minimum=. unab vars: inc* foreach lvar in `vars' { replace minimum = `lvar’ if `lvar’<minimum } generate minimum=. unab vars: inc* foreach lvar in `vars' { if `lvar’<minimum { replace minimum = `lvar’ } } ! 1.Initialize target variable 2.Prepare the variable-list 3.Looping: 4. In-the-loop-commands

  20. Some of the danish participants who might know ”the DREAM database” will propably be able to see how these approaches can be useful when working with this fantastic but difficult construction.

  21. Thank you very much

More Related