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: Making a matrix out of three variables


From   Phil Schumm <[email protected]>
To   Statalist Statalist <[email protected]>
Subject   Re: st: Making a matrix out of three variables
Date   Thu, 16 Jan 2014 15:19:06 -0600

On Jan 16, 2014, at 2:03 PM, Eilya Torshizian <[email protected]> wrote:
> I need to convert three variables to a matrix. The values of variable A and B should be used as row and column names of the output matrix.  Let's assume three columns of data, where A, B and C are the name of my numeric variables,
> 
> A      B      C
> A1 | A1 | C1
> A1 | A2 | C2
> A1 | A4 | C3
> A1 | A5 | C4
> A2 | A2 | C5
> A2 | A1 | C6
> A2 | A3 | C7
> 
> I need to convert these to the following matrix,
> 
>      A1 A2 A3 A4 A5
> A1 C1 C2  0   C3  0
> A2 C6 C5  C7  0   0
> 
> As I have a wide range of observations, I would like to avoid nested loops.


Assuming C is a numeric variable, the following will do what you want (with the resulting matrix named "M"):

    reshape wide C, i(A) j(B) string
    mkmat C*, matrix("M") rownames(A)
    mata: st_matrix("M", editmissing(st_matrix("M"),0))

Note that the only way to replace the initial missing values of the matrix with 0s is to use the Mata function editmissing().


-- Phil


*
*   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