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.

- 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 imputare in una variabile diversi valori (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 | values_if :d3x, :label => "Lettori",
1 => ["d3to=2 AND GT(d3n_1, d3n_di)", "Per lo piu' cartacei"],
2 => ["d3to=2 AND LT(d3n_1, d3n_di)", "Per lo piu' digitali"],
3 => ["d3to=2 AND d3n_1=d3n_di" , "Nella stessa misura" ]
|
typology è l’istruzione più adatta quando bisogna costruire una tipologia a partire da due o più variabili (è più semplice di values_if quando le condizioni sono semplicemente le combinazioni dei vari codici delle variabili di origine):
1 2 3 4 5 6 | typology :tipo1, :label => "Tipologia di acquirenti",
:vars => [:d1, :d2],
1 => [1..2, 3, "Acquistano solo gusto 1" ],
2 => [1..2, [1,2], "Acquistano entrambi i gusti"],
3 => [ 3, [1,2], "Acquistano gusto 2" ],
4 => [ 3, 3, "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_, 1..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"
|