2016-07-04 4 views
-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]의 경우 [C2] 퍼센트를 [C1] 퍼센트를 교대로 둘을 결합하려는?

현재 시도 : matrix final=cases, percent하지만 그냥 서로 옆에두고 있습니까? 각 열이 대/소문자와 백분율을 번갈아 표시하도록합니다.

그런 다음 케이스 및 백분율 열이있는 이미 형식이 지정된 테이블에 넣으려면 putexcel 명령을 사용합니다.

+0

[채팅에서 계속 토론하십시오] (http://chat.stackoverflow.com/rooms/116454/discussion-between-exodia16-and-nick-cox). – Exodia16

+0

이전 스레드와 마찬가지로 여기서 재현 가능한 예제가 없다는 것을 알 수 있습니다. Stata 관련 조언에 대해서는 SO 및 http://www.statalist.org/forums/help에 대한 우수 사례를 보려면 http://stackoverflow.com/help/mcve를 참조하십시오. Stata 질문에 대한 명백한 누락 또는 수정 사항이 계속되는 대부분을 참조하십시오 . 좋은 질문은 답을 더 많이 만듭니다. 바쁜 사람들은 때로는 문제가 개선되어야한다고 말할 수도 있지만, 종종 예제와 코드를 설정하는 데 너무 많은 작업이 필요한 질문을 무시할뿐입니다. –

답변

1

Nick Cox 님의 의견을 알려주세요.

문제는 원하는대로 행렬을 결합하는 간단한 해결책이 없다는 것입니다. 그럼에도 불구하고, 당신이 개설 한 경로와 매우 다른 경로를 취함으로써 원하는 결과를 얻는 것은 간단합니다. 자연어로 기술을 설명하는 에세이를 쓰는 것은 재미 없습니다. 코드를 사용하여 코드를 보여주는 것이 훨씬 간단합니다. 아래에서 설명했듯이, Nick이 수행하려고했을 수도 있습니다.

제공되는 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

사실, 그것은 당신이 [순열 행렬 (permutation matrix)] (https://en.wikipedia.org/wiki/Permutation_matrix)을 구성 할 수 있다는 것을 알았습니다 - 하나와 하나의 영으로 구성된 정체성 행렬입니다. 각 행과 열에 하나씩, "나란하게"행렬을 곱해도 원하는 순서대로 열이 정렬 된 비슷한 크기의 행렬이됩니다. 그리고, 어리석은 말로, 그것은 '도움 [M-1] 순열'에 있습니다. 여전히, 여기에 갈 수있는 가장 좋은 방법은 아닙니다. –

관련 문제