Hi all

I am trying to get percents from a tabstat table. I know that using tabulate command is much more easy but my task is using a tabstat command.

I have half sucess only I get percents for half table:

I am using tabstatmat (SSC). Example:

Code:
* Example generated by -dataex-. To install: ssc install dataex
clear
input str18 make int(price mpg rep78) float headroom int(trunk weight length turn displacement) float gear_ratio byte foreign
"AMC Concord"        4099 22 3 2.5 11 2930 186 40 121 3.58 0
"AMC Pacer"          4749 17 3   3 11 3350 173 40 258 2.53 0
"AMC Spirit"         3799 22 .   3 12 2640 168 35 121 3.08 0
"Buick Century"      4816 20 3 4.5 16 3250 196 40 196 2.93 0
"Buick Electra"      7827 15 4   4 20 4080 222 43 350 2.41 0
"Buick LeSabre"      5788 18 3   4 21 3670 218 43 231 2.73 0
"Buick Opel"         4453 26 .   3 10 2230 170 34 304 2.87 0
"Buick Regal"        5189 20 3   2 16 3280 200 42 196 2.93 0
"Buick Riviera"     10372 16 3 3.5 17 3880 207 43 231 2.93 0
"Buick Skylark"      4082 19 3 3.5 13 3400 200 42 231 3.08 0
"Cad. Deville"      11385 14 3   4 20 4330 221 44 425 2.28 0
"Cad. Eldorado"     14500 14 2 3.5 16 3900 204 43 350 2.19 0
"Cad. Seville"      15906 21 3   3 13 4290 204 45 350 2.24 0
"Chev. Chevette"     3299 29 3 2.5  9 2110 163 34 231 2.93 0
"Chev. Impala"       5705 16 4   4 20 3690 212 43 250 2.56 0
"Chev. Malibu"       4504 22 3 3.5 17 3180 193 31 200 2.73 0
"Chev. Monte Carlo"  5104 22 2   2 16 3220 200 41 200 2.73 0
"Chev. Monza"        3667 24 2   2  7 2750 179 40 151 2.73 0
"Chev. Nova"         3955 19 3 3.5 13 3430 197 43 250 2.56 0
"Dodge Colt"         3984 30 5   2  8 2120 163 35  98 3.54 0
"Dodge Diplomat"     4010 18 2   4 17 3600 206 46 318 2.47 0
"Dodge Magnum"       5886 16 2   4 17 3600 206 46 318 2.47 0
"Dodge St. Regis"    6342 17 2 4.5 21 3740 220 46 225 2.94 0
"Ford Fiesta"        4389 28 4 1.5  9 1800 147 33  98 3.15 0
"Ford Mustang"       4187 21 3   2 10 2650 179 43 140 3.08 0
"Linc. Continental" 11497 12 3 3.5 22 4840 233 51 400 2.47 0
"Linc. Mark V"      13594 12 3 2.5 18 4720 230 48 400 2.47 0
"Linc. Versailles"  13466 14 3 3.5 15 3830 201 41 302 2.47 0
"Merc. Bobcat"       3829 22 4   3  9 2580 169 39 140 2.73 0
"Merc. Cougar"       5379 14 4 3.5 16 4060 221 48 302 2.75 0
"Merc. Marquis"      6165 15 3 3.5 23 3720 212 44 302 2.26 0
"Merc. Monarch"      4516 18 3   3 15 3370 198 41 250 2.43 0
"Merc. XR-7"         6303 14 4   3 16 4130 217 45 302 2.75 0
"Merc. Zephyr"       3291 20 3 3.5 17 2830 195 43 140 3.08 0
"Olds 98"            8814 21 4   4 20 4060 220 43 350 2.41 0
"Olds Cutl Supr"     5172 19 3   2 16 3310 198 42 231 2.93 0
"Olds Cutlass"       4733 19 3 4.5 16 3300 198 42 231 2.93 0
"Olds Delta 88"      4890 18 4   4 20 3690 218 42 231 2.73 0
"Olds Omega"         4181 19 3 4.5 14 3370 200 43 231 3.08 0
"Olds Starfire"      4195 24 1   2 10 2730 180 40 151 2.73 0
"Olds Toronado"     10371 16 3 3.5 17 4030 206 43 350 2.41 0
"Plym. Arrow"        4647 28 3   2 11 3260 170 37 156 3.05 0
"Plym. Champ"        4425 34 5 2.5 11 1800 157 37  86 2.97 0
"Plym. Horizon"      4482 25 3   4 17 2200 165 36 105 3.37 0
"Plym. Sapporo"      6486 26 . 1.5  8 2520 182 38 119 3.54 0
"Plym. Volare"       4060 18 2   5 16 3330 201 44 225 3.23 0
"Pont. Catalina"     5798 18 4   4 20 3700 214 42 231 2.73 0
"Pont. Firebird"     4934 18 1 1.5  7 3470 198 42 231 3.08 0
"Pont. Grand Prix"   5222 19 3   2 16 3210 201 45 231 2.93 0
"Pont. Le Mans"      4723 19 3 3.5 17 3200 199 40 231 2.93 0
"Pont. Phoenix"      4424 19 . 3.5 13 3420 203 43 231 3.08 0
"Pont. Sunbird"      4172 24 2   2  7 2690 179 41 151 2.73 0
"Audi 5000"          9690 17 5   3 15 2830 189 37 131  3.2 1
"Audi Fox"           6295 23 3 2.5 11 2070 174 36  97  3.7 1
"BMW 320i"           9735 25 4 2.5 12 2650 177 34 121 3.64 1
"Datsun 200"         6229 23 4 1.5  6 2370 170 35 119 3.89 1
"Datsun 210"         4589 35 5   2  8 2020 165 32  85  3.7 1
"Datsun 510"         5079 24 4 2.5  8 2280 170 34 119 3.54 1
"Datsun 810"         8129 21 4 2.5  8 2750 184 38 146 3.55 1
"Fiat Strada"        4296 21 3 2.5 16 2130 161 36 105 3.37 1
"Honda Accord"       5799 25 5   3 10 2240 172 36 107 3.05 1
"Honda Civic"        4499 28 4 2.5  5 1760 149 34  91  3.3 1
"Mazda GLC"          3995 30 4 3.5 11 1980 154 33  86 3.73 1
"Peugeot 604"       12990 14 . 3.5 14 3420 192 38 163 3.58 1
"Renault Le Car"     3895 26 3   3 10 1830 142 34  79 3.72 1
"Subaru"             3798 35 5 2.5 11 2050 164 36  97 3.81 1
"Toyota Celica"      5899 18 5 2.5 14 2410 174 36 134 3.06 1
"Toyota Corolla"     3748 31 5   3  9 2200 165 35  97 3.21 1
"Toyota Corona"      5719 18 5   2 11 2670 175 36 134 3.05 1
"VW Dasher"          7140 23 4 2.5 12 2160 172 36  97 3.74 1
"VW Diesel"          5397 41 5   3 15 2040 155 35  90 3.78 1
"VW Rabbit"          4697 25 4   3 15 1930 155 35  89 3.78 1
"VW Scirocco"        6850 25 4   2 16 1990 156 36  97 3.78 1
"Volvo 260"         11995 17 5 2.5 14 3170 193 37 163 2.98 1
end
label values foreign origin
label def origin 0 "Domestic", modify
label def origin 1 "Foreign", modify

tab foreign rep78, col matcell(col)
           |                   Repair Record 1978
  Car type |         1          2          3          4          5 |     Total
-----------+-------------------------------------------------------+----------
  Domestic |         2          8         27          9          2 |        48
           |    100.00     100.00      90.00      50.00      18.18 |     69.57
-----------+-------------------------------------------------------+----------
   Foreign |         0          0          3          9          9 |        21
           |      0.00       0.00      10.00      50.00      81.82 |     30.43
-----------+-------------------------------------------------------+----------
     Total |         2          8         30         18         11 |        69
           |    100.00     100.00     100.00     100.00     100.00 |    100.00



qui tab   foreign rep78, matcell(col)
mata : st_matrix("totalcol", colsum(st_matrix("col")))

egen both= group(foreign rep78 )
tabstat rep78, s(n) by(both) save
tabstatmat x, nototal

local maxcol = rowsof(x)
forvalues k=1(1)`maxcol' {

    local frec`k' `=x[`k',1]'
    local cc`k' `=totalcol[1,`k']'
    local porcent`k': di %3.2f = (`frec`k''/`cc`k'')*100

di "`frec`k''"
di "`porcent`k''"
    }

2
100.00
8
100.00
27
90.00
9
50.00
2
18.18
3
  .
9
  .
9
  .