{smcl} {* 25aug2008}{...} {cmd:help mata mz_pancolshape()} {hline} {title:Title} {p 4 14 2} {bf:mz_pancolshape() -- Reorganizes, in columns, a panel data matrix for which the panels are presented by lines} {title:Syntax} {p 4 23 2} {it:transmorphic matrix} {cmd:mz_pancolshape(}{it:W}{cmd:,} {it:c}{cmd:,} {it:f}{cmd: )} {pstd} where {p 10 16 2} {it:W}: {it:transmorphic matrix} containing panel data {p 10 16 2} {it:c}: {it:real scalar} indicating the number of columns for the new panel data matrix {p 10 16 2} {it:f}: {it:string scalar} indicating how the user wants the panels to be presented {title:Description} {p 4 4 2} {cmd:mz_pancolshape()} reshapes a {it:t x (c * K)} panel data set matrix {it:W}, to a {it:(K * t) x c} panel data matrix if the argument {it:f} takes the value {it:"CK"}. {it:K} is the number of panels, {it:t} the number of observations in panels and {it:c} the number of columns of the new matrix. The {it:"CK"} is specified to reshape a panel data matrix that was remodeled by the {bf:{help mf_mz_panrowshape:mz_panrowshape()}} function in which the {it:f} argument took the value {it:"CK"}. See {bf:{help mf_mz_panrowshape:mz_panrowshape()}} for more details on the {it:"CK"} and {it:(c * K)} specifications. {p 4 4 2} {cmd:mz_panrowshape()} reshapes a {it:t x (K * c)} panel data set matrix {it:W}, to a {it:(K * t) x c} panel data matrix if the argument {it:f} takes the value {it:"KC"}. The {it:"KC"} is specified to reshape a panel data matrix that was remodeled by the {bf:{help mf_mz_panrowshape:mz_panrowshape()}} function in which the {it:f} argument took the value {it:"KC"}. See {bf:{help mf_mz_panrowshape:mz_panrowshape()}} for more details on the {it:"KC"} and {it:(K * c)} specifications. {title:Remarks} {p 4 4 2} Remarks are presented under the following headings: {help mf_mz_pancolshape##remarks1:Case where {it:f} takes the value {it:"CK"}} {help mf_mz_pancolshape##remarks2:Case where {it:f} takes the value {it:"KC"}} {marker remarks1}{...} {title:Case where {it:f} takes the value {it:"CK"}} {txt} Suppose we have a matrix {it:V} {com}: V {res} {txt}1 2 3 4 {c TLC}{hline 21}{c TRC} 1 {c |} {res}1 1 3.1 3.7{txt} {c |} 2 {c |} {res}1 2 9.2 4.2{txt} {c |} 3 {c |} {res}1 3 2.5 6.5{txt} {c |} 4 {c |} {res}1 4 8.4 7{txt} {c |} 5 {c |} {res}1 5 4.6 3.9{txt} {c |} 6 {c |} {res}2 1 6.2 1.5{txt} {c |} 7 {c |} {res}2 2 5 3.2{txt} {c |} 8 {c |} {res}2 3 7.8 9.6{txt} {c |} 9 {c |} {res}2 4 5.4 7.7{txt} {c |} 10 {c |} {res}2 5 3.4 9.2{txt} {c |} 11 {c |} {res}3 1 2.1 2.3{txt} {c |} 12 {c |} {res}3 2 9 1.5{txt} {c |} 13 {c |} {res}3 3 1.4 6.7{txt} {c |} 14 {c |} {res}3 4 4.8 3.3{txt} {c |} 15 {c |} {res}3 5 9.5 9.7{txt} {c |} {c BLC}{hline 21}{c BRC} {txt} We reshape it using the {bf:{help mf_mz_panrowshape:mz_panrowshape()}} function {txt} in which the argument {it:f} takes the value {it:"CK"} {com}: matA = mz_panrowshape(V, 1, "CK") {com}: matA {res} {txt}1 2 3 4 5 6 7 8 9 10 11 12 {c TLC}{hline 61}{c TRC} 1 {c |} {res}1 1 3.1 3.7 2 1 6.2 1.5 3 1 2.1 2.3{txt} {c |} 2 {c |} {res}1 2 9.2 4.2 2 2 5 3.2 3 2 9 1.5{txt} {c |} 3 {c |} {res}1 3 2.5 6.5 2 3 7.8 9.6 3 3 1.4 6.7{txt} {c |} 4 {c |} {res}1 4 8.4 7 2 4 5.4 7.7 3 4 4.8 3.3{txt} {c |} 5 {c |} {res}1 5 4.6 3.9 2 5 3.4 9.2 3 5 9.5 9.7{txt} {c |} {c BLC}{hline 61}{c BRC} {txt} To reshape the matrix {it:matA} to the original matrix {it:V}, we use the {txt} {cmd:mz_pancolshape()} function in which the {it:f} argument takes the value {txt} {it:"CK"} {com}: matB = mz_pancolshape(matA, 4, "CK") {com}: matB {res} {txt}1 2 3 4 {c TLC}{hline 21}{c TRC} 1 {c |} {res}1 1 3.1 3.7{txt} {c |} 2 {c |} {res}1 2 9.2 4.2{txt} {c |} 3 {c |} {res}1 3 2.5 6.5{txt} {c |} 4 {c |} {res}1 4 8.4 7{txt} {c |} 5 {c |} {res}1 5 4.6 3.9{txt} {c |} 6 {c |} {res}2 1 6.2 1.5{txt} {c |} 7 {c |} {res}2 2 5 3.2{txt} {c |} 8 {c |} {res}2 3 7.8 9.6{txt} {c |} 9 {c |} {res}2 4 5.4 7.7{txt} {c |} 10 {c |} {res}2 5 3.4 9.2{txt} {c |} 11 {c |} {res}3 1 2.1 2.3{txt} {c |} 12 {c |} {res}3 2 9 1.5{txt} {c |} 13 {c |} {res}3 3 1.4 6.7{txt} {c |} 14 {c |} {res}3 4 4.8 3.3{txt} {c |} 15 {c |} {res}3 5 9.5 9.7{txt} {c |} {c BLC}{hline 21}{c BRC} {txt} Which is the same matrix as {it:V}. To be sure we use the {cmd:asserteq()} {txt} function {com}: asserteq(matB, V) {txt} Nothing is returned, then the two matices are the same {marker remarks2}{...} {title:Case where {it:f} takes the value {it:"KC"}} {txt} We reshape the {it:V} matrix using the {bf:{help mf_mz_panrowshape:mz_panrowshape()}} {txt} function but the argument {it:f} takes the value {it:"KC"} {com}: matC = mz_panrowshape(V, 1, "KC") {com}: matC {res} {txt}1 2 3 4 5 6 7 8 9 10 11 12 {c TLC}{hline 61}{c TRC} 1 {c |} {res}1 2 3 1 1 1 3.1 6.2 2.1 3.7 1.5 2.3{txt} {c |} 2 {c |} {res}1 2 3 2 2 2 9.2 5 9 4.2 3.2 1.5{txt} {c |} 3 {c |} {res}1 2 3 3 3 3 2.5 7.8 1.4 6.5 9.6 6.7{txt} {c |} 4 {c |} {res}1 2 3 4 4 4 8.4 5.4 4.8 7 7.7 3.3{txt} {c |} 5 {c |} {res}1 2 3 5 5 5 4.6 3.4 9.5 3.9 9.2 9.7{txt} {c |} {c BLC}{hline 61}{c BRC} {txt} To reshape the matrix {it:matC} to the original matrix {it:V}, we use the {txt} {cmd:mz_pancolshape()} function in which the {it:f} argument takes the value {txt} {it:"KC"} {com}: matD = mz_pancolshape(matC, 4, "KC") {com}: matD {res} {txt}1 2 3 4 {c TLC}{hline 21}{c TRC} 1 {c |} {res}1 1 3.1 3.7{txt} {c |} 2 {c |} {res}1 2 9.2 4.2{txt} {c |} 3 {c |} {res}1 3 2.5 6.5{txt} {c |} 4 {c |} {res}1 4 8.4 7{txt} {c |} 5 {c |} {res}1 5 4.6 3.9{txt} {c |} 6 {c |} {res}2 1 6.2 1.5{txt} {c |} 7 {c |} {res}2 2 5 3.2{txt} {c |} 8 {c |} {res}2 3 7.8 9.6{txt} {c |} 9 {c |} {res}2 4 5.4 7.7{txt} {c |} 10 {c |} {res}2 5 3.4 9.2{txt} {c |} 11 {c |} {res}3 1 2.1 2.3{txt} {c |} 12 {c |} {res}3 2 9 1.5{txt} {c |} 13 {c |} {res}3 3 1.4 6.7{txt} {c |} 14 {c |} {res}3 4 4.8 3.3{txt} {c |} 15 {c |} {res}3 5 9.5 9.7{txt} {c |} {c BLC}{hline 21}{c BRC} {txt} Which is the same matrix as {it:V}. To be sure we use the {cmd:asserteq()} {txt} function {com}: asserteq(matD, V) {txt} Nothing is returned, then the two matrices are identical {title:Conformability} {cmd:mz_pancolshape(}{it:W}{cmd:,} {it:c}{cmd:,} {it:f}{cmd:)} {it:W}: {it:t x (c * K)} or {it:t x (K * c)} {it:c}: {it:1 x 1} {it:f}: {it:1 x 1} {it:result}: {it:(K * t) x c}, {it:t} = number of obs. in panel, {it:K} = number of panels {title:Diagnostics} {p 4 4 2} {cmd:mz_pancolshape()} aborts with error if {it:cols(W)} is not divisible by {it:c}. {title:Source code} {p 4 4 2} {help ltimbimata_source##mz_pancolshape:mz_pancolshape.mata} {title:Author} {p 4 4 2} Diallo Ibrahima Amadou, {browse "mailto:zavren@gmail.com":zavren@gmail.com} {title:Also see} {p 4 13 2} Online: help for {bf:{help mf_mz_panrowshape:mz_panrowshape()}}, {bf:{help ltimbimata}} {p_end}