Archive for the ‘Uncategorized’ Category

Lgraph tips for time interval graphs in stata

January 2, 2017

stata* COnverts a clocktime (DMY hms) to string intervals for use in lgraph

// DATE

split time ,p(” “)
rename time2 x
split x, p(/)
gen month= real(x1)
gen day= real(x2)
gen yr = real(x3) + 2000
drop x*

// TIME
rename time1 x
split x,p(:)
gen hr=real(x1)
gen mins=real(x2)
gen secs=real(x3)
drop x*

gen double date_tc= mdyhms(month, day,yr,hr, mins, secs)
format date_tc %tcNN/DD/CCYY_HH:MM
egen string_dt = concat (yr month day hr mins secs),p(-)
format %tcHH:MM:SS date_tc
gen date_td = dofc(date_tc)
format %tdDD/NN/CCYY date_td
order date_tc string_dt
sort date_tc
order date_tc date_td
drop tim*
// Hrly intervals
gen min0=0
gen s0=0
gen double date_min60= mdyhms(month, day,yr,hr, min0, s0)
format date_min60 %tcNN/DD/CCYY_HH:MM
egen string_min60 = concat (yr mo day hr min0),p(-)

// 20 minute intervals
egen min20=cut(mins), at(0(20)60)
gen double date_min20 = mdyhms(month, day,yr,hr, min20, s0)
format %tcHH:MM:SS date_min20
egen string_mins20 = concat (yr mo day hr min20),p(-)
// 10 minute intervals
gen s10=0
gen double date_min = mdyhms(month, day,yr,hr, mins, s0)
egen min10=cut(mins), at(0(10)60)
gen double date_min10 = mdyhms(month, day,yr,hr, min10, s0)
format %tcHH:MM:SS date_min10
egen string_mins10 = concat (yr mo day hr min10),p(-)

//5 minute intervals
egen min5=cut(mins), at(0(5)60)
gen double date_min5 = mdyhms(month, day,yr,hr, min5, s0)
format %tcHH:MM:SS date_min
egen string_mins5 = concat (yr mo day hr min5),p(-)

//1 minute intervals

gen double date_min1 = mdyhms(month, day,yr,hr, mins, s0)
format %tcHH:MM:SS date_min
egen string_mins1 = concat (yr month day hr mins),p(-)
///////////////// from clock date for lgraph
// DATE
gen month= month(dofc(date_tc))
gen day= day(dofc(date_tc))
gen yr = year(dofc(date_tc))
gen hr=hh(date_tc)
gen mins=mm(date_tc)
gen secs=ss(date_tc)

// Hrly intervals
gen min0=0
gen s0=0
gen double date_min60= mdyhms(month, day,yr,hr, min0, s0)
format date_min60 %tcNN/DD/CCYY_HH:MM
egen string_min60 = concat (yr mo day hr min0),p(-)

// 20 minute intervals
egen min20=cut(mins), at(0(20)60)
gen double date_min20 = mdyhms(month, day,yr,hr, min20, s0)
format %tcHH:MM:SS date_min20
egen string_mins20 = concat (yr mo day hr min20),p(-)
// 10 minute intervals
gen s10=0
gen double date_min = mdyhms(month, day,yr,hr, mins, s0)
egen min10=cut(mins), at(0(10)60)
gen double date_min10 = mdyhms(month, day,yr,hr, min10, s0)
format %tcHH:MM:SS date_min10
egen string_mins10 = concat (yr mo day hr min10),p(-)

//5 minute intervals
egen min5=cut(mins), at(0(5)60)
gen double date_min5 = mdyhms(month, day,yr,hr, min5, s0)
format %tcHH:MM:SS date_min
egen string_mins5 = concat (yr mo day hr min5),p(-)

//1 minute intervals

gen double date_min1 = mdyhms(month, day,yr,hr, mins, s0)
format %tcHH:MM:SS date_min
egen string_mins1 = concat (yr month day hr mins),p(-)

Mountain plot in stata

January 2, 2017

// MOUNTAIN PLOT OR FOLDED EMPIRICAL CUMULATIVE DISTRIBUTION

// get differences and rank them with lowest first
//percentile for each difference is rank x 100/(N+1) where N is is nu,mber of differences
//plot percentile (y) vs difference or perecent dfference on x

gen A = Ch1
gen B = Ch2

gen diff = A – B
egen rank= rank(diff)
sort diff

gen percentdiff = diff/A *100
sum(rank)
gen x = rank * 100/(r(max))
gen = x
replace y = 100-y if y>50
rename y percentile

twoway (line percentile diff, sort)

Stata special commands and tips and loops

January 2, 2017

// Putiing a scalar in a graph axis scale
scalar yy = 10 // lactate treshold on graphs
ylabel(0(2)`=scalar(yy)’
// extract last letter in a string eg. hosp_no
generate x= substr(hosp_no,-1,.)

* remove everything up to and including the last space (greedy match)
gen var2 = regexr(var,”.+ “,””)

* skip anything that is not a number and match anything after
gen var3 = regexs(1) if regexm(var,”[^0-9]+(.+)”)

* match a space that is followed a series of digits at the end of the string and return the digits
gen var4 = regexs(1) if regexm(var,” ([0-9]+)$”)
//refrencing a scalar in a graph
`=scalar(xx)’

// make clock date time from all seperate fields
gen double date= mdyhms(mo, d,yr,h, m, s)
format date %tc

// REMOVE DOUBLE QUOTES FROM FILEDS eg “12/07/2014”
replace v = subinstr(v, `”””‘, “”, .)

// IF LOOP FOR DAYS OF WEEK
if dow_now==5{
do $parentpath\hrg_graphs_detail.do
cls
}

// GRAPH LOGGING
capture log close
log using 1.smcl, replace
log off

cleanlog using 1.smcl, saving(“F:\PICANET\stata_logs\x.smcl”) noheader replace
view “F:\PICANET\stata_logs\x.smcl”
print “F:\PICANET\stata_logs\x.smcl”
translate F:\PICANET\stata_logs\x.smcl” 2.pdf

// TIMES
scalar yr_now =year(date(c(current_date),”DMY”)) // current date in format DMY
//SET GRAPH SCHEME
set scheme sol // add “, perm” to make it permanent

// YEAR AS SCALAR
scalar year_now = year(date(c(current_date),”DMY”))

* ERASE LIST DO FILES
local xlist 2 3 4 5 6 7 // _all
foreach c of local xlist {
erase `c’.dta
}

// REPLACE MISSING VALUES WITH ZERO
local xlist month*
foreach v of varlist `xlist’ {
replace `v’ =0 if `v’==.
}

*CAPITALISE ALL VARIABLES
foreach v of var * {
rename `v’ `=upper(“`v'”)’
}
*LEFT JUSTIFY ALL STRINGS
ds, has(type string)
foreach v in `r(varlist)’ {
local type : type `v’
local type : subinstr local type “str” “”
format `v’ %-`type’s
}

//LOOP LABEL VARIABLES
global varlist1 x y x
foreach var in $varlist1 {
local label`var’: variable label `var’
egen mean_`var’ = mean(`var’)
label variable mean`var’ “Mean of `label`var’ ‘ “

}
//LOOP TO REPEAT A TASK MANY TIMES

forvalues i = 1/15 {
di “foo”
}

or forvalues i = 1/`=_N’ {
replace x = y + z in `i’
}
//LOOP TO FILL MISSING VALUES WITH ZERO
local xlist month*
foreach v of varlist `xlist’ {
replace `v’ =0 if `v’==.
}
// ENTER DATE VALUE IN DTA FILE NAME
gen x= day(date)
gen y=month(date)
gen z=year(date)
egen q= concat(z y x),p(_ )
scalar dt =”$exportpath\” + “cases_” + q[1] + “.dta”
drop x y z q
save `=scalar(dt)’, replace

// LOOP OF YEARS WITH EXPORT OF YEAR INTO DTA TITLE
forvalues i = 2004/2010 {
scalar yr_choice = `i’

// enter code here ……………

// ENTER DATE VALUE IN DTA FILE NAME
gen x= yr_choice

egen q= concat(x),p(_ )
scalar dt =”$exportpath\” + “picu_xml_export_” + q[1] + “.xls, firstrow(variables) replace”

export excel using `=scalar(dt)’

}
// SCALAR in text
`=scalar(type)’

// CURRENT DATE
gen date_now =date(c(current_date),”DMY”) // current date in format DMY
format date_now %td
// USING SCALAR TO OPEN DTA FILE (cant use global)
scalar x= “F:\PICANET\stata_tables\Adverse_incidents\adverse_incidents_nasal_pressure_sore_”
scalar zz = “`=scalar(x)'” + “`=scalar(yr_last)'” + “.dta”
use “`=scalar(zz)'”, clear

// LOOP TO RUN DO FILE ON SPECIFIC DAY

if dow_now==5{
do $parentpath\hrg_graphs_detail.do
cls
}

// CLOSE STATA GRAPH from windows menu
window manage close graph

// DATE LOOPS
forvalues year=2011/2014 {
forvalues month=1/12 {
forvalues day=1/31 {
local mdy=mdy(`month’,`day’,`year’)
etc…
}
}
}
// SPECIAL GRAPHS FOR MEAN BY HOUR IN TYRENDED DATA
// time set data to second
graph twoway (tsline sats1 ,ytitle(“INVOS L Brain”) xtitle(” “) xlabel(#24, labsize(vsmall) labcolor(black) angle(vertical) format(%tcDD/NN/YY_HH:MM)) ///
ylabel(#4, labsize(vsmall) labcolor(black) angle(horizontal) nogrid)),legend(off) //note(Date =`scalar(note1)’)
graph save Graph 1.gph, replace

lgraph sats1 date_hr, errortype(sd) separate(0.01) ytitle(“Invos Brain Sats Mean (SD)”) ///
xtitle(“Date”) xlabel(#24, labsize(vsmall) angle(ninety) format(%tcDD/MM/YY_HH)) //xlabel(, labsize(small) angle(ninety))

graph save Graph 2.gph, replace
gr combine 1.gph 2.gph , row(2) note( (`=scalar(note1)’))
// LGRAPHS
lgraph lov_ett yr, errortype(se) separate(0.01) xlabel(#14, labsize(vsmall) angle(ninety))
lgraph lov_ett yr, median q(25 75) separate(0.01) xlabel(#14, labsize(vsmall) angle(ninety))
// Stop graph display
noshow

*UTC TIME
// time is uNIX time jan 1 1970
* convert unix timestamp to %tc EST
clonevar datetime = time
replace datetime = datetime*1000 + msofhours(24)*3653 – msofhours(0) // mfofhours is time from gmc
format %tC datetime
//MAKE CALENDAR for everyday of year
set obs 366
tsmktim x, start(01jan2015)

Stata in range for dates

August 19, 2012

by id, sort: gen byte both =
> sum(inrange(date, mdy(1,1,2005), mdy(12,31,2005))) >&
> sum(inrange(date, mdy(1,1,2006), mdy(12,31,2006)))

Stata: Convert variables to lower case

August 19, 2012

foreach var of varlist var1 var2 var3 {

rename `var’ `=lower(“`var'”)’
}

Stata: Carryforward a value in stata to filling missing gaps

August 19, 2012

ssc install carryforward

Stata: autorename the top line of file to variable name

August 19, 2012

use autorename ( ssc install autorename )

Stata Stewart acid base module

August 19, 2012

stata stewart acod base calculations

gen clna= cl/na //gen Cl:Na ratio
gen be_cl = na-cl-32 //base excess due to chloride
gen be_alb= ((42-alb)*0.25) // Story-Bellomo-Fencl
gen be_sig = be-(be_cl+be_alb) //SIG of base excess

gen hydrogen =1/(10^((ph)-9)) //Hydrogen ion concentration

gen carb = (1000*0.0000000000246*((pco1 * 7.55)/10^-ph))
label variable carb “CO2 charge”

gen albc =(alb*(0.123*ph-0.631)) //chareg albumin in mmeq_L
label variable albc “Albumin charge”

gen pi =(phos)*(0.309*ph-0.469) //phosphate charge
label variable pi “Phosp charge”

gen sid = na + k1 -cl + ca + mg //Strong ion difference
label variable sid “SID”

gen sida = sid – lac
label variable sida “SIDa”

gen weaka = albc + pi
label variable weaka “Weak acids”

gen sig = sid – carb – weaka
label variable sig “SIG”

gen side = carb + weaka
label variable side “SIDe”

gen highsig = cond(sig>5,1,0)

gen highlac = cond(lac>5,1,0)
tab highlac highsig,row chi2

gen siglac = sig + lac
gen agap= na + k1 – cl – carb //anion gap
label variable agap “Anion gap”

graph twoway (lfitci sig lac) (scatter sig lac)
graph twoway (lfitci siglac clna) (scatter siglac clna)
graph twoway (lfitci clna na) (scatter clna na)
graph twoway (lfitci clna na) (scatter clna na)
graph twoway (lfitci clna lac) (scatter clna lac)
graph twoway (lfitci be sig) (scatter be sig)
graph twoway (lfitci be_cl lac) (scatter be_cl lac)
graph twoway (lfitci ph lac) (scatter ph lac)
graph twoway (lfitci ph be) (scatter ph be)
graph twoway (lfitci agap sig) (scatter agap sig)
graph twoway (lfitci sig lac) (scatter sig lac )
graph twoway (lfitci siglac clna) (scatter siglac clna )
graph twoway (lfitci hydrogen clna) (scatter hydrogen clna )

stata: importing tricky variable names into stata

August 19, 2012

New function strtoname() converts a general string to a string meeting Stata’s naming conventions.
functions lower(),
ltrim(),
proper()
reverse()
rtrim(),
upper()
now have synonyms strlower(), strltrim(), …, and strupper()

stata automate file name import with macro loop

August 19, 2012

stata automate file name with macros

* automate file name with macros
forval i = 1/87 {
insheet using filename`i’.txt, clear
save c:\DATA\filename`i’.dta”, replace
}