# Re: st: Teach an old dog new tricks

 From "Austin Nichols" To statalist@hsphsun2.harvard.edu Subject Re: st: Teach an old dog new tricks Date Tue, 13 May 2008 10:57:32 -0400

```Sergiy Radyakin <serjradyakin@gmail.com>:
As for the sparse matrix problem in (A), you can generate a new
variable with all distinct concatenations of rowvar and colvar, then
cycle over the values of that, thereby ignoring the empty cells.

On Tue, May 13, 2008 at 10:18 AM, Sergiy Radyakin
> Thank you all, who responded to my request regarding obtaining a
> matrix of means. Besides the answers posted in this thread I have
> received a couple of suggestions privately. To summarize and close the
> thread, the suggestions can be divided roughly into two groups:
>
>  A. Obtaining all possible levels of the by-variables, then cycling
> through these values and computing means for each subgroup. This can
> be quite slow, especially in case of "sparse" matrices, where only a
> few non-empty cells exist (for a 50x50 matrix -summarize- must be
> called 2500 times).
>
>  B. Using other Stata commands which can produce matrix of means as a
> by-product. Unfortunately none of them is fast enough either. In
> particular, Joseph Coveney suggested using xi to automatically create
> all combinations of values and then estimating a univariate
> regression. Although this is a very short code, it is perhaps the
> slowest, and demands large amounts of memory.
>
> And finally, there is an interesting detail in Austin Nichols' code,
> which remained uncommented in the discussion, but may be interesting
> to the Stata programmers. I refer to the line:
>
>      loc colc: subinstr local col "." "`=char(183)'", all
>
> where Austin substitutes a dot in the colnames with a character with a
> code 183, which is also a dot, but does not cause Stata to complain
> "operator invalid".
>
> Thank you all,