Dear SPSS users, I wonder if there is a built-in possibility to show cumulated percentages within CTABLES, like FREQUENCIES command does by default. I know you can post compute them with PCOMPUTE but that's cumbersome if you have a variable with a wide range like numeric age or sth. Any ideas are welcome. Thanks, Mario Mario Giesel Munich, Germany |
Here is an example of how to do this with the STATS TABLE CALC extension command using employee data.sav, which is shipped with Statistics. * A table with 3 category columns: CTABLES /TABLE educ [C] BY jobcat [C][COUNT COLPCT.COUNT PCT40.1] /CATEGORIES VARIABLES=educ ORDER=A KEY=VALUE EMPTY=INCLUDE TOTAL=YES POSITION=AFTER MISSING=EXCLUDE /CATEGORIES VARIABLES=jobcat ORDER=A KEY=VALUE EMPTY=INCLUDE MISSING=EXCLUDE. I assume that the cumulative percents column should be added next to the regular percents, and a total may or may not be at the bottom. This will compute the cumulative percents column for each category of the column variable and label it "Cum Pct". It uses a simple custom module, pcts.py, that appears below. As it iterates over the rows, it calls the custom function cumpct in the pcts.py module. STATS TABLE CALC SUBTYPE="customtable" PROCESS=PRECEDING /TARGET FORMULA="pcts.cumpct(arg, x[0])" DIMENSION=COLUMNS LEVEL = -1 LOCATION="Column N %" REPEATLOC=YES LABEL="Cum Pct" MODE=AFTER HIDEINPUTS=NO CUSTOMMODULE="pcts" /FORMAT CELLFORMAT="##.#%" DECIMALS=1 INVALID="". Here is the custom module pcts.py. Note that the indentation matters. def cumpct(arg, curvalue): roworcol = arg['roworcol'] if roworcol == 0: arg['cumvalue'] = curvalue else: arg['cumvalue'] = arg['cumvalue'] + curvalue return min(arg['cumvalue'], 100.) # prevents a total row from getting added in pcts.py should be saved where Python can find it such as in the python\lib\site-packages directory under your Statistics installation. (I will send this as a file separately to Mario.) On Tue, Jun 26, 2018 at 1:33 AM Mario Giesel <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |