Suggerimenti

Render

Durante i test può essere conveniente disattivare il render in XLSX e attivare quello in HTML, è molto più veloce.

L’istruzione sh! può essere utile per eseguire test durante la scrittura delle tabelle, in quanto esegue il render in HTML e interrompe lo script.

ptLab

Durante la scrittura di uno script, tenere aperto il file di dati in ptLab, permette di visualizzare e controllare le variabili, i codici e i dati.

Il menu contestuale (pulsante destro) della lista delle variabili permette di copiare elementi utili per la scrittura dello script: nomi e etichette di variabili, bozze di comandi classify, recode, value_if, ecc.

_images/ptlab-variable-contex.png
  • Ctrl-Q copia il nome della variabile
  • Alt-Q copia tutti i nomi delle variabili visualizzate
  • F8 imposta la viariabile come incrocio
  • Un doppio click su una cella delle frequenze o degli incroci imposta automaticamente un filtro

Creazione/modifica variabili

classify è l’istruzione più adatta per riaggregare in classi una variabile con valori interi (è preferibile a recode perché più semplice e sintetica):

1
2
3
4
5
classify :d3a => {1..2=>"Almeno settimanale", 3..4=>"Al massimo mensile", 5=>"Non indica"},
  :into => :r3s, :label => "Frequenza di utilizzo"

classify :d1 => {[nil,0]=>"Nessuno",  1..10=>"1-10", 10..25=>"10-25", 26.to_hi=>"26 o più"},
 :into => :d1r, :label => ["Acquisti"]

bins permette di riclassificare in classi una variabile che contiene valori decimali (rispetto a recode gestisce in modo più semplice i valori decimali):

1
bins :q5 => :q5cl, :floor => [4, 6, 8], :labels => ["Da 1 a 3", "Da 4 a 5", "Da 6 a 7", "Da 8 a 10"]

Spesso bins è usata dopo un’istruzione means per aggregare in classi i punteggi ottenuti:

1
2
mean s(:d13_,1..7), :into => :md13, :type => :float, :size => 2.3, :label => "D13. Media giudizi"
bins :md13 => :r_md13, :floor => [3.5, 4.6], :levels => ["Basso", "Medio", "Alto"]

values_if è l’istruzione più adatta quando bisogna costruire una tipologia a partire da due o più variabili (esprime meglio l’intento di quello che si sta facendo rispetto a una batteria di istruzioni value_if e inoltre segnala se le espressioni usate si sovrappongono):

1
2
3
4
5
values_if :tipo1, :label => "Tipologia di acquirenti",
  1 => ["d1=1 AND d2=2", "Acquistano solo gusto 1"    ],
  2 => ["d1=1 AND d2=1", "Acquistano entrambi i gusti"],
  3 => ["d1=2 AND d2=1", "Acquistano gusto 2"         ],
  4 => ["d1=2 AND d2=2", "Non acquistano"             ]

value_if è utile quando, al verificarsi di una condizione, bisogna imputare un valore in una variabile o creare una nuova variabile che contiene un solo codice (potenzialmente permette di fare un po’ tutto, ma a discapito della chiarezza):

1
value_if :boost, 1, "BETWEEN(age,18,35)", :label => "Campione Boost"

if_any identifica la presenza di uno o più valori in una serie di variabili, in genere utilizzata con variabili multiple o altre batterie (vedere anche le altre istruzioni della stessa famiglia: if_all, if_none, if_only):

1
2
3
if_any s(:aq21_,5,8,10), 1, :ecom, "Ha comprato on line"

if_any s(:v16_,1..5), [2,3], :figli8_12, "Ha figli tra gli 8 e i 12 anni", :levels => {1=>"Sì", 0=>"No"}

count conteggia le occorrenze di uno o più valori in una serie di variabili:

1
count :nprod, 1, s(:q35_,1..25), :label => "Numero di prodotti acquistati"

recode è utile quando è necessaria una maggiore flessibilità nel riclassificare i codici della variabile o per riclassificare solo alcuni codici (è una funzione più generica richiamata da altre istruzioni più specializzate):

1
2
3
recode :v2 => {-1.from_low=>1, 0=>0, 1.to_hi=>2}, :into => :v2cl

recode :v3 => {[0, 99]=>9}

compute permette di calcolare i valori di una variabile attraverso un’espressione complessa (è una funzione più generica richiamata da altre istruzioni più specializzate):

1
compute :d10_mi => "SUM(IF(VALID(q10_h),d10_h*60,0), d10_m)", :label => "Tempo impiegato in minuti"