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]

Re: st: RE: mata: columns of different eltypes in a transmorphic matrix


From   Nick Cox <njcoxstata@gmail.com>
To   "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: RE: mata: columns of different eltypes in a transmorphic matrix
Date   Thu, 10 Oct 2013 13:42:53 +0100

Naturally, you do often need to combine numeric and string, and the
answer is that strings can include numeric characters, but not vice
versa. So, we can do things like this:

sysuse auto

In Mata:

: make = st_sdata(., "make", "foreign")

: make
                     1
     +------------------+
   1 |       Audi 5000  |
   2 |        Audi Fox  |
   3 |        BMW 320i  |
   4 |      Datsun 200  |
   5 |      Datsun 210  |
   6 |      Datsun 510  |
   7 |      Datsun 810  |
   8 |     Fiat Strada  |
   9 |    Honda Accord  |
  10 |     Honda Civic  |
  11 |       Mazda GLC  |
  12 |     Peugeot 604  |
  13 |  Renault Le Car  |
  14 |          Subaru  |
  15 |   Toyota Celica  |
  16 |  Toyota Corolla  |
  17 |   Toyota Corona  |
  18 |       VW Dasher  |
  19 |       VW Diesel  |
  20 |       VW Rabbit  |
  21 |     VW Scirocco  |
  22 |       Volvo 260  |
     +------------------+

: price  = st_data(., "price", "foreign")

: make, strofreal(price, "%2.0f")
                     1                2
     +-----------------------------------+
   1 |       Audi 5000             9690  |
   2 |        Audi Fox             6295  |
   3 |        BMW 320i             9735  |
   4 |      Datsun 200             6229  |
   5 |      Datsun 210             4589  |
   6 |      Datsun 510             5079  |
   7 |      Datsun 810             8129  |
   8 |     Fiat Strada             4296  |
   9 |    Honda Accord             5799  |
  10 |     Honda Civic             4499  |
  11 |       Mazda GLC             3995  |
  12 |     Peugeot 604            12990  |
  13 |  Renault Le Car             3895  |
  14 |          Subaru             3798  |
  15 |   Toyota Celica             5899  |
  16 |  Toyota Corolla             3748  |
  17 |   Toyota Corona             5719  |
  18 |       VW Dasher             7140  |
  19 |       VW Diesel             5397  |
  20 |       VW Rabbit             4697  |
  21 |     VW Scirocco             6850  |
  22 |       Volvo 260            11995  |
     +-----------------------------------+
Nick
njcoxstata@gmail.com


On 10 October 2013 13:27, Joseph Coveney <stajc2@gmail.com> wrote:
> Nick Cox wrote:
>
> This is an excellent answer, but one simple point seems submerged. An
> elementary strategy is to put numeric variables in a numeric matrix
> and string variables in a string matrix.  I've often done that in Mata
> programs, and never yet felt the need for structs, pointers, and so
> forth.
>
> --------------------------------------------------------------------------------
>
> I agree.   I'm not sure what László's needs are for keeping Stata dataset string
> and numeric data in sync in a single location in Mata.  Perhaps, if he'd like to
> elaborate, someone on the list could offer suggestions that don't entail structs
> or pointer vectors, List or Array classes, and the like.
>
> As you could see from my example, taking the long way round involves additional
> programming steps that in turn give rise to opportunities for logical errors,
> such as -select(X, missing(X[1,]))- instead of -select(X, !missing(X[1,]))-, and
> syntax errors, such as -PointerVector = (A, B)- instead of -PointerVector = &A,
> &B-, among others that I haven't noticed yet.
>
> Joseph Coveney
>
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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