Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
Kaspar Dardas <kaspar.dardas@students.ebs.edu> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: AW: alternative to forvalues combined with bysort, by |

Date |
Mon, 28 Jun 2010 16:17:04 +0200 |

Hey, all right, sorry. This was just a copy & paste mistake in the last email. Unfortunately, my problem is not still not solved. Thanks & best, Kaspar 2010/6/28 Martin Weiss <martin.weiss1@gmx.de>: > > <> > > > The message http://www.stata.com/statalist/archive/2008-08/msg00107.html you are citing contains an -if-, though, while your code in http://www.stata.com/statalist/archive/2010-06/msg01525.html > > " egen tag = tag(transactionid) & inrange(eventdate, eventdate[`i'] > - 365, eventdate[`i']) > " > > does not. Hence the confusion. > > > > > > > HTH > Martin > > > -----Ursprüngliche Nachricht----- > Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Kaspar Dardas > Gesendet: Montag, 28. Juni 2010 14:43 > An: statalist@hsphsun2.harvard.edu > Betreff: Re: st: AW: alternative to forvalues combined with bysort, by > > Hey Martin, > > > -egen, tag()- takes a -varlist-, as far as I can see from its help > file, but does Stata allow you to add the "& inrange()..." part w/o > error? > > Yep, absolutely. I get exactly what I need with this code but > unfortunately only for the entire datatset. I have taken the code > from: > > http://www.stata.com/statalist/archive/2008-08/msg00107.html > > Maybe bysort does not work because of this. However, for one single > dataset it works absolutely fine. > Do you think (egen, tag()- takes a -varlist-, as far as I can see > from its help file, but does Stata allow you to add the "& > inrange()...") is the problem, after all? > > Thanks Martin and best, > > > Kaspar > > 2010/6/28 Martin Weiss <martin.weiss1@gmx.de>: >> >> <> >> >> >> " By the way, your >> solution "(forv i=1/`=_N'{" gets the exact same results as "quietly >> forvalues i = 1/`N' {"" >> >> >> >> Again sorry, you defined a -local- up there which contained _N. But still, my line does it all in one, while you need two. >> >> >> >> " The easiest way would be to drop the remaining seven countries and do >> all this eight times. However, I would like to find a better solution. >> Maybe you have one last advice on this for me. Thanks for all of your >> help again!" >> >> >> This is not the easiest way, and I do not know of a single problem that requires you to -drop- outright. As I said earlier, the solution to this kind of problem is -bysort-, as described by NJC in http://www.stata-journal.com/sjpdf.html?articlenum=pr0004. Looping over all rows of the data, as in >> >> -forv i=1/`=_N'- >> >> is rarely necessary in Stata. >> >> >> >> " In each country 10000. >> >> --> egen tag = tag(transactionid) & inrange(eventdate, eventdate[`i'] >> - 365, eventdate[`i'])" >> >> >> -egen, tag()- takes a -varlist-, as far as I can see from its help file, but does Stata allow you to add the "& inrange()..." part w/o error? >> >> >> HTH >> Martin >> >> >> -----Ursprüngliche Nachricht----- >> Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Kaspar Dardas >> Gesendet: Montag, 28. Juni 2010 14:28 >> An: statalist@hsphsun2.harvard.edu >> Betreff: Re: st: AW: alternative to forvalues combined with bysort, by >> >> Hi Martin, >> >> thanks for all the help and effort. You definitely do not have to be >> sorry. Its me who doesn't understand this stuff. Well, I am still >> struggling with it. I think, however, I know where the problem is but >> my Stata knowledge is just too bad to solve it. By the way, your >> solution "(forv i=1/`=_N'{" gets the exact same results as "quietly >> forvalues i = 1/`N' {" >> >> My actual problem is that I want to tag all "transactionsids" in ONE >> country 365 days prior to the current transaction. There are about >> 80000 transactions. In each country 10000. >> >> --> egen tag = tag(transactionid) & inrange(eventdate, eventdate[`i'] >> - 365, eventdate[`i']) >> >> All of this works fine for one country (whenever I drop the other 7 >> countries). However, whenever I try to use double loop version I still >> get the results for my entire datasample. Thus, (very simply speaking) >> all eight countries are treated as one. I think this has something do >> with >> >> local N = _N >> qui forval i = 1/`N' { (or your version forv i=1/`=_N) >> >> the _N refers to the entire dataset but I need somehow to apply the _N >> for each country separately so not for 80000 but rather for 8*10000 >> observations. Stata also does not allow to use >> >> bysort location: local N = _N >> >> The easiest way would be to drop the remaining seven countries and do >> all this eight times. However, I would like to find a better solution. >> Maybe you have one last advice on this for me. Thanks for all of your >> help again! >> >> >> Best, >> >> Kaspar >> >> 2010/6/28 Martin Weiss <martin.weiss1@gmx.de>: >>> >>> <> >>> >>> Re your assertion that -bysort- and -forvalues- do not work together: This has never been a problem for me, since -bysort- is so incredibly useful and versatile. For an intro, see NJC`s http://www.stata-journal.com/sjpdf.html?articlenum=pr0004 >>> >>> >>> >>> HTH >>> Martin >>> >>> >>> -----Ursprüngliche Nachricht----- >>> Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Martin Weiss >>> Gesendet: Montag, 28. Juni 2010 13:19 >>> An: statalist@hsphsun2.harvard.edu >>> Betreff: AW: st: AW: alternative to forvalues combined with bysort, by >>> >>> >>> <> >>> >>> Sorry about my mistake, I never noticed you had a loop nested in there, b/c of the -quietly- command in front of it. One of the problems in your code is >>> >>> ************* >>> quietly forvalues i = 1/`N' { >>> ************* >>> >>> which should be - forv i=1/`=_N'{- >>> >>> >>> HTH >>> Martin >>> >>> -----Ursprüngliche Nachricht----- >>> Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Kaspar Dardas >>> Gesendet: Montag, 28. Juni 2010 12:30 >>> An: statalist@hsphsun2.harvard.edu >>> Betreff: Re: st: AW: alternative to forvalues combined with bysort, by >>> >>> Martin, >>> >>> thanks for the prompt reply. Nesting two forvalues loops in a similar >>> fashion as my second solution which includes "foreach" ? I think you >>> are referring to something that I have already tried and showed in my >>> firs email, correct? Or did you mean something else? I think my first >>> email might have been not very precise. Again, my first command in the >>> below email should run over 8 countries. My second command is my >>> (failed) approach to solve it (which I think is similar to nesting two >>> forvalues loops) >>> >>> Best, >>> >>> Kaspar >>> >>> 2010/6/28 Martin Weiss <martin.weiss1@gmx.de>: >>>> >>>> <> >>>> >>>> >>>> You may want to nest two -forvalues- loops... >>>> >>>> >>>> >>>> HTH >>>> Martin >>>> >>>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Kaspar Dardas >>>> Gesendet: Montag, 28. Juni 2010 12:11 >>>> An: statalist@hsphsun2.harvard.edu >>>> Betreff: st: alternative to forvalues combined with bysort, by >>>> >>>> Hello, >>>> >>>> I would like to run the below forvalues loop for several countries >>>> ("locations") in one large dataset. Thus, I simply need to repeat this >>>> loop for subsets in one large dataset in the same fashion as the >>>> bysort: command would provide. "bysort:" , however, cannot be combined >>>> with forvalues. >>>> >>>> local N = _N >>>> gen count = . >>>> qui forval i = 1/`N' { >>>> egen tag = tag(transactionid) if gvkey == gvkey[`i'] & >>>> inrange(eventdate, eventdate[`i'] - 365, eventdate[`i']) >>>> count if tag >>>> replace count = r(N) in `i' >>>> drop tag >>>> } >>>> >>>> Therefore, I have tried a foreach loop: >>>> >>>> foreach x in location { >>>> gen count_all_trades = . if location == `x' >>>> quietly forvalues i = 1/`N' { >>>> egen tag = tag(transactionid) if location == `x' & >>>> inrange(eventdate, eventdate[`i'] - 365, eventdate[`i']) >>>> count if tag & location == `x' >>>> replace count_all_trades = r(N) in `i' if location == `x' >>>> drop tag >>>> } >>>> } >>>> >>>> However, this does not give me the correct solution. Is there anything >>>> similar to the "bysort:" command which can be used in combination with >>>> the forvalues command? >>>> Again, I simply need to rerun the first command for 8 different >>>> countries in one large dataset. Alliteratively, I could also split my >>>> dataset into 8 subsamples and run the above code 8 times. However, I >>>> would like to find a more "elegant" way to solve this problem. >>>> >>>> Best regards, >>>> >>>> Kaspar >>>> * >>>> * 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/ >>>> >>> >>> * >>> * 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/ >>> >>> >>> * >>> * 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/ >> >> >> * >> * 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/ > > > * > * 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/

**Follow-Ups**:**Re: st: AW: alternative to forvalues combined with bysort, by***From:*Kaspar Dardas <kaspar.dardas@students.ebs.edu>

**References**:**st: alternative to forvalues combined with bysort, by***From:*Kaspar Dardas <kaspar.dardas@students.ebs.edu>

**Re: st: AW: alternative to forvalues combined with bysort, by***From:*Kaspar Dardas <kaspar.dardas@students.ebs.edu>

**Re: st: AW: alternative to forvalues combined with bysort, by***From:*Kaspar Dardas <kaspar.dardas@students.ebs.edu>

**Re: st: AW: alternative to forvalues combined with bysort, by***From:*Kaspar Dardas <kaspar.dardas@students.ebs.edu>

- Prev by Date:
**st: Testing the difference of two independent Cronbachs internal consistency alphas** - Next by Date:
**st: RE: (New) Popularity of R, SAS, SPSS, Stata...** - Previous by thread:
**AW: st: AW: alternative to forvalues combined with bysort, by** - Next by thread:
**Re: st: AW: alternative to forvalues combined with bysort, by** - Index(es):