seems likes magic to me :->

Matthias Fäth
Im Mediapark 12
50670 Köln
t: 0221-2907973
m: 0171-9832175
e: m.fa...@gmx.de

2015-01-10 18:48 GMT+01:00 Frans Houweling <fhouwel...@email.it>:

>  Hi ftr,
>   sorry if this syntax is long but I did not have any suitable sav file at
> hand.
>
>
> *******  Create fake data N=200
> ************************************************.
> DATA LIST FREE /dummy (F3.0).
> BEGIN DATA
> 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
> 8 9 0 1 2 3 4 5 6 7 8 9 0
> 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
> 8 9 0 1 2 3 4 5 6 7 8 9 0
> 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
> 8 9 0 1 2 3 4 5 6 7 8 9 0
> 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
> 8 9 0 1 2 3 4 5 6 7 8 9 0
> END DATA.
>
> **** Make 10 variables with random data r1 TO r10.
> VECTOR r (10).
> LOOP #i = 1 TO 10.
> + COMPUTE r(#i) = RV.UNIFORM(0, 100).
> END LOOP.
> EXE.
>
> **** Make 10 dichotomic vars m1 TO m10.
> DO REPEAT r = r1 TO r10 / p = 27 67 80 34 11 60 21 44 8 59 / m = m1 TO m10.
> + DO IF MOD(RND(r), 5) NE 0.
> +  COMPUTE m = r LE p.
> + END IF.
> END REPEAT.
> EXE.
> VAR LAB m1 "Sports" /m2 "Food" /m3 "Cinema" /m4 "Books" /m5 "Art" /m6
> "Music" /m7 "Nature"
>    /m8 "TV" /m9 "Politics" /m10 "Automobiles".
>
> *** Make fake breakdown var.
> COMPUTE segment = dummy GT 3.
> VAR LAB segment "Segment".
> VAL LAB segment 0 "Hi" 1 "Lo".
>
> *******  End create fake data
> **************************************************.
>
> DESCRIPTIVES m1 TO m10.
>
> **** Table 1. SPSS only.
> *TABLES
>   /MDGROUP = hobbies "" m1 TO m10 (1)
>    /PTOTAL = pt "Total"
>   /TABLE = hobbies BY pt + segment
>    /STATISTICS CPCT(hobbies (PCT5.1) "": segment)
>   /TITLE="Don't do this at home with PSPP".
>
> *** Convert dichotomic MD to numeric MR.
> *** I create 10 vars here but usually the MR answers are less than the MD
> codes.
> COMPUTE #k = 0.
> VECTOR mr (10).
> DO REPEAT md = m1 TO m10.
> + COMPUTE #k = #k + 1.
> + DO IF md.
> +  COMPUTE #done = 0.
> +  LOOP #i = 1 TO 10.
> +   DO IF SYSMIS(mr(#i)) AND NOT #done.
> +    COMPUTE mr(#i) = #k.
> +    COMPUTE #done = 1.
> +   END IF.
> +  END LOOP.
> + END IF.
> END REPEAT.
> EXECUTE.
> VAL LAB mr1 TO mr10 1 "Sports" 2 "Food" 3 "Cinema" 4 "Books" 5 "Art" 6
> "Music" 7 "Nature"
>    8 "TV" 9 "Politics" 10 "Automobiles".
>
> **** Table 2 should be same as Table 1. SPSS only.
> *TABLES
>   /MRGROUP = hobbies "" mr1 TO mr10
>    /PTOTAL = pt "Total"
>   /TABLE = hobbies BY pt + segment
>    /STATISTICS CPCT(hobbies (PCT5.1) "": segment).
>
> *** Convert numeric MR to dichotomic MD.
> VECTOR bin (10) /* highest code in MR vars */.
> DO REPEAT mr = mr1 TO mr10.
> + DO IF NOT MISSING(mr).
> +  COMPUTE bin(mr) = 1.
> + END IF.
> END REPEAT.
> RECODE bin1 TO bin10 (SYSMIS=0) (1=100).
> VAR LAB bin1 "Sports" /bin2 "Food" /bin3 "Cinema" /bin4 "Books" /bin5
> "Art" /bin6 "Music" /bin7 "Nature"
>    /bin8 "TV" /bin9 "Politics" /bin10 "Automobiles".
>
> **** Same result again.
> *TABLES
>   /MDGROUP = hobbies "" bin1 TO bin10 (100)
>    /PTOTAL = pt "Total"
>   /TABLE = hobbies BY pt + segment
>    /STATISTICS CPCT(hobbies (PCT5.1) "": segment).
>
> *** PSPP alternatives.
> ** Would be nice if PSPP honoured FORMATS.
> FORMATS bin1 TO bin10 (PCT5.1)  /* does nothing ?*/.
>
> MEANS bin1 TO bin10 BY segment.
>
> SORT CASES BY segment.
> SPLIT FILE BY segment.
> DESCRIPTIVES bin1 TO bin10.
> SPLIT FILE OFF.
>
> ** My favourite. Finish off in spreadsheet.
> AGGREGATE OUTFILE = * /BREAK = segment
>    /bin1 TO bin10 = MEAN(bin1 TO bin10).
> FLIP.
> SAVE TRANSLATE /OUTFILE = "table.txt"
>   /TYPE=TAB /FIELDNAMES /REPLACE.
>
> Regards
> frans
>
>
>
> On 10/01/2015 13:29, F. Thomas wrote:
>
> This sounds interesting. Can you please translate this into a practical
> example because I don't understand all of your moves ?
>
> Cheers,
> ftr
>
> On 09/01/2015 21:21, Frans Houweling wrote:
>
> Hi Matthias,
>   I use good ol' (SPSS 14) TABLES, so I don't usually save MRSETS but
> define them on the fly with /MRGROUP; I guess CTABLES give similar results.
> Often I prefer to translate my MR variables to MD format like this
> (suppose codes with max code 100,  and suppose max 10 answers):
>
> VECTOR bin (100)  /* max code */.
> DO REPEAT mr = mr1 TO mr10  /* input vars */.
> + DO IF NOT MISSING(mr).
> +  COMPUTE bin(mr) = 1.
> + END IF.
> END REPEAT.
> RECODE bin1 TO bin100 /* max code again */  (SYSMIS=0) (1=1)    /* or for
> readability (1=100) */.
>
> The tedious part is converting VAL LAB 1 "Alfa Romeo" 2 "Audi" etc. into
> VAR LAB bin1 "Alfa Romeo" /bin2 "Audi" etc., but once this is done you can
> use MEANS or DESCRIPTIVES in combination with SPLIT FILE to live without
> (C)TABLES and without SPSS(C).
> HTH
> frans
>
>
>
> _______________________________________________
> Pspp-users mailing 
> listPspp-users@gnu.orghttps://lists.gnu.org/mailman/listinfo/pspp-users
>
>
>
> _______________________________________________
> Pspp-users mailing list
> Pspp-users@gnu.org
> https://lists.gnu.org/mailman/listinfo/pspp-users
>
>
_______________________________________________
Pspp-users mailing list
Pspp-users@gnu.org
https://lists.gnu.org/mailman/listinfo/pspp-users

Reply via email to