2016-07-04 1 views
-1

2つの行列、ケースとパーセンテージがあります。私は行列の両方を組み合わせるにはどうすればよい2つの行列に1つの数値とその他のパーセントを結合します。

tab year region if sex==1, matcell(cases) 
tab year region, matcell(total) 
mata:st_matrix("percent", 100 * st_matrix("cases"):/st_matrix("total")) 


matrix list cases 

     c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 
r1 1313 1289 1121 1176 1176 1150 1190 1184 1042 940 
r2 340 359 357 366 383 332 406 367 352 272 
r3 260 246 266 265 270 259 309 306 266 283 
r4 271 267 293 277 317 312 296 285 265 253 
r5 218 249 246 213 264 255 247 221 229 220 
r6 215 202 157 202 200 204 220 183 176 180 
r7 178 193 218 199 194 195 201 187 172 159 
r8 127 111 107 130 133 99 142 143 131 114 
r9 64 68 85 74 70 60 59 70 76 61 


. matrix list percent, format(%2.1f) 

percent[9,10] 
     c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 
r1 70.1 71.2 67.3 67.2 66.9 71.5 72.6 72.5 74.9 73.2 
r2 65.3 65.2 69.1 64.4 68.0 70.5 72.0 64.8 66.4 64.9 
r3 74.7 73.7 74.7 69.2 68.9 67.6 70.5 72.3 79.4 80.9 
r4 66.3 72.6 72.9 74.9 72.7 73.8 72.2 73.3 74.9 71.7 
r5 68.8 67.1 66.0 63.6 67.2 67.1 65.2 67.4 68.6 73.8 
r6 73.1 72.9 69.2 63.7 67.6 68.0 72.4 68.8 74.9 78.9 
r7 64.5 60.3 69.9 70.6 69.3 78.3 72.3 65.8 71.4 71.3 
r8 66.1 64.2 63.3 74.7 69.3 56.9 70.6 70.1 63.9 57.9 
r9 77.1 73.9 70.2 74.0 71.4 73.2 81.9 72.9 87.4 74.4 

... [C2] [C1] 2すなわち、例の間で交互の列との両方を組み合わせたいパーセント[C1]の場合、[C2]パーセント?

現在、私は試しました:matrix final=cases, percentしかし、それはお互いの隣に置くだけですか?ケースとパーセントの間で各列が交互になるようにしたい。

次に、putexcelコマンドを使用して、大文字と小文字の列を含む既にフォーマットされた表に挿入します。

+0

[チャットでこのディスカッションを続行してください](http://chat.stackoverflow.com/rooms/116454/discussion-between-exodia16-and-nick-cox) – Exodia16

+0

以前のスレッドと同様、ここでは再現可能な例がないことに注意してください。 SOとStataに関するアドバイスについては、http://stackoverflow.com/help/mcveを参照してください。Stataの質問に対する明らかな省略や改訂を引き継ぐものの多くは、http://www.statalist.org/forums/help 。よい質問は答えをより可能にします。忙しい人は時には改善が必要なことを示すかもしれませんが、しばしば例とコードを設定するにはあまりにも多くの作業を必要とするという質問を無視します。 –

答えて

1

Nick Coxのコメントをサポートして始めましょう。

問題は、あなたが望むように行列を結合するための簡単な解決法はないということです。それにもかかわらず、あなたが概説したものとは非常に異なる道を選ぶことによって、あなたが望む結果を達成するのは簡単です。テクニックを自然言語で説明するエッセイを書くのは楽しいことではありません。私は以下のようにコードを使ってそれを実証する方がはるかに簡単ですし、ニックがそうしたいと思うかもしれないと思っています。

Nickさんから提供されたリンクに記載されているように、Minimal、Complete、Verifiableの例を提供していないため、他の人があなたのトラックから離れた場所を見せないようにしています。

// create a minimal amount of sample data hopefully similar to actual data 
clear 
input year region sex 
2001 1 1 
2001 1 2 
2001 1 2 
2002 1 1 
2002 1 2 
2001 2 1 
2002 2 1 
2002 2 2 
end 
list, clean noobs 
// use collapse to generate summaries equivalent to two tabs 
generate male = sex==1 
collapse (count) total=male (sum) cases=male, by(year region) 
list, clean noobs 
generate percent = 100*cases/total 
keep year region total percent 
// flatten and interleave the columns 
reshape wide total percent, i(year) j(region) 
drop year 
list, clean noobs 
// now use export excel to output, 
// or use mkmat to load into a matrix and use putexcel to output 
+0

事実の後で、あなたは[置換行列](https://en.wikipedia.org/wiki/Permutation_matrix)を作ることができます。これは、1と1だけで構成された同一性のような行列です。あなたの「横並び」マトリックスを乗算すると、同様の大きさの行列が、並べ替えられた列をあなたが望む順序に並べ替えるときに、各行と列に1つずつ表示されます。そして、おしゃべりによって、それは '助け[M-1]順列 'にあります。それでも、ここに行く最善の方法ではありません。 –

関連する問題