Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: why -recode-takes longer than -replace-


From   "Martin Weiss" <[email protected]>
To   <[email protected]>
Subject   st: RE: why -recode-takes longer than -replace-
Date   Sun, 27 Jun 2010 23:09:24 +0200

<>

So the speed advantage reported by Amanda works out to 89.5% for -replace-.
It can be increased to 91.5% by using -inlist()- for the qualifier:

***********
//imitate 10.1 SE
vers 10.1
set processors 1


//get data
clear*
set mem 1G
loc nobs 100000

set obs `nobs'

qui foreach var of newlist var1-var130{
	gen `var'=irecode(runiform(),0,.1,.4,1)+6
}

timer clear
timer on 1
qui recode _all (8=.) (9=.)
timer off 1

//get data anew
drop _all
set obs `nobs'

qui foreach var of newlist var1-var130{
	gen `var'=irecode(runiform(),0,.1,.4,1)+6
}

//timer clear
timer on 2
qui foreach v of varlist *{
	replace `v'=. if `v'==8 | `v'==9
}
timer off 2


//get data anew
drop _all
set obs `nobs'

qui foreach var of newlist var1-var130{
	gen `var'=irecode(runiform(),0,.1,.4,1)+6
}

//timer clear
timer on 3
qui foreach v of varlist *{
	replace `v'=. if inlist(`v',8,9)
}
timer off 3

qui timer list
di in r "recode took: " r(t1) _n /* 
*/ "replace took: " r(t2) ", " %3.1fc r(t2)*100/r(t1) "% of recode timing"
_n /* 
*/ "replace with inlist() took: " r(t3) ", " %3.1fc r(t3)*100/r(t1) "% of
recode timing"
***********


HTH
Martin


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Amanda Fu
Sent: Sonntag, 27. Juni 2010 22:11
To: [email protected]
Subject: st:why -recode-takes longer than -replace-

Dear Statalisters,

I am just curious about a fact noticeable when I use -recode- (1 as
following) or -replace- (2 as following)  to recode all the variables
in a data set (size :  52,996,616) using Stata 10.1 SE: the recode
command  takes much longer than replace. I was wondering what causes
the speed difference and if the speed difference implies for large
data set it would be better to use replace instead of recode.

1.  slower
.recode _all (8=.) (9=.)

2. faster
foreach v of varlist * {
.replace `v'=. if `v'==8 | `v'==9
}
end

Thanks for your time!

Sincerely,
Amanda
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index