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

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

From |
Phil Clayton <philclayton@internode.on.net> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: _N in by-groups |

Date |
Fri, 19 Aug 2011 18:02:56 +1000 |

. program dispby, byable(recall) 1. marksample touse 2. count if `touse' 3. end . bys foreign: dispby --------------------------------------------------------------------------------------------------------------- -> foreign = Domestic 52 --------------------------------------------------------------------------------------------------------------- -> foreign = Foreign 22 This is documented in [P] byable Phil On 19/08/2011, at 5:41 PM, Matthew White wrote: > So if I execute: > sysuse auto > bys foreign: drop if _n == _N > Then two observations are dropped because _N is the number of > observations in the by-group. > > But in this (admittedly silly) example, _N seems to be the number of > observations in the data set: > program dispby, byable(recall) > disp `0' > end > sysuse auto > bys foreign: dispby _N > Both times 74 is displayed, instead of 52 in the first by-group and 22 > in the second. > > Thanks, > Matt > > On Fri, Aug 19, 2011 at 10:07 AM, Maarten Buis <maartenlbuis@gmail.com> wrote: >> On Fri, Aug 19, 2011 at 2:21 AM, Matthew White wrote: >>> If a Stata command has by-groups, it seems like _N is interpreted >>> sometimes as the number of observations in the by-group and sometimes >>> as the number of observations in the data set. >> >> If you use the -by :- prefix it is always defined as the number of >> observations within each by-group. Stata would be a pretty lousy >> program if such a scalar randomly changed meaning... >> >> If you want the total number of observations than I would just do: >> >> local Ntot = _N >> >> or inside a program that previously used -marksample-: >> >> count if `touse' >> local Ntot = r(N) >> >> later you do >> >> by <somevar> `touse' : <something using _N and `Ntot'> if `touse' >> >> Hope this helps, >> Maarten >> >> -------------------------- >> Maarten L. Buis >> Institut fuer Soziologie >> Universitaet Tuebingen >> Wilhelmstrasse 36 >> 72074 Tuebingen >> Germany >> >> >> http://www.maartenbuis.nl >> -------------------------- >> * >> * 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/ >> > > > > -- > Matthew White > Evaluation Coordinator > Urban Micro-Insurance Project > Innovations for Poverty Action > > +254 (0)701 025 276 > mwhite@poverty-action.org > > * > * 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: _N in by-groups***From:*Matthew White <mwhite@poverty-action.org>

**References**:**st: _N in by-groups***From:*Matthew White <mwhite@poverty-action.org>

**Re: st: _N in by-groups***From:*Maarten Buis <maartenlbuis@gmail.com>

**Re: st: _N in by-groups***From:*Matthew White <mwhite@poverty-action.org>

- Prev by Date:
**st: Combining ROC curves in one graph** - Next by Date:
**Re: st: _N in by-groups** - Previous by thread:
**Re: st: _N in by-groups** - Next by thread:
**Re: st: _N in by-groups** - Index(es):