Variabili: trasformazioni (3)

Nota

Per le espressioni vedi anche Espressioni

same_base

Rende omogenee le basi di una variabile o di un set di variabili rispetto a un’altra variabile o set di variabili.

Argomenti:

  • varlist1 => varlist2: i due elenchi di variabili o variabili singole: le prime sono le variabili da modificare, le seconde quelle che definiscono la base
  • varlist: se si indica un solo elenco di variabili, la base viene definita dall’insieme di casi che hanno almeno un valore (compreso lo zero) nel set di variabili
  • :value => value: il valore da assegnare (default 0)
  • :codes => codelist: i codici da considerare (default tutti i codici)
  • :drop => false|true: true elimina i valori validi nei casi che non sono compresi nella base del gruppo di confronto; false (default) non elimina nessun valore

La variante same_base! aggiunge il parametro :drop => true.

1
2
3
4
5
same_base :d5 => :d1, :value => 9
same_base :d5 => s(:d7_,1..10), :drop => true
same_base! :d5 => s(:d7_,1..10)
same_base s(:d7_,1..10)
same_base s(:d7_,1..10) => s(:q10_,1..5)

base_resp

Rende omogenee le basi di un set di variabili considerando validi solo i casi che hanno almeno un valore maggiore di 0 su una delle variabili. Nelle multiple mette a blank i casi che hanno solo valori zero nel set di variabili.

Argomenti:

  • varlist: l’elenco delle variabili
1
2
3
4
5
6
# eventuali casi che hanno zero su tutte le variabili concorrono a definire la base
md s(:v12_,1..8), "Tabella a base valori validi (0/1)"

# considero nella base solo i casi che hanno almeno una citazione
base_resp s(:v12_,1..8)
md s(:v12_,1..8), "Tabella a base citazioni (1)"

mc_to_md

Trasforma un set di variabili multicategory in un set di variabili multidicotomy. Restituisce l’elenco delle variabili create.

Argomenti:

  • varlist => root: l’elenco delle variabili multicategory e la radice del nome delle variabili multidicotomy
  • :zero => false|true: true fa il padding dello zero nei nomi delle variabili (default false)
  • :label => :level|:auto|text: l’etichetta delle variabili, :level imposta l’etichetta uguale a quella del livello, :auto: ricava l’etichetta da quella delle variabili originarie se contengono un testo comune (default :level)
  • :levels => {}: permette di impostare le stesse etichette dei livellli per tutte le variabili (utilizzare {} per non mettere nessuna etichetta)
  • :drop => false|true: true elimina le variabili di origine (default false)
  • :before => true|varname: posiziona le variabili prima delle variabili di origine (true), della variabile indicata (varname)
  • :after => true|varname: posiziona le variabili dopo le variabili di origine (true), la variabile indicata (varname)
1
2
3
4
5
6
7
8
 mc_to_md varlist => new_vars_root

 mc_to_md s(:d5_,1..10) => :x5_
 mc_to_md s(:d5_,1..10) => 'x5_', :zero => true

 mc_to_md s(:d5_,1..10) => :x5_, :label => :level, :levels => {0 => "No", 1 => "Sì"}

 mc_to_md s(:d5_,1..10) => :x5_, :label => :level, :levels => {}

md_to_mc

Trasforma un set di variabili multidicotomy in un set di variabili multicategory. Restituisce l’elenco delle variabili create.

Argomenti:

  • varlist => root: l’elenco delle variabili multidicotomy e la radice del nome delle variabili multicategory
  • :zero => false|true: true fa il padding dello zero nei nomi delle variabili (default false)
  • :nvars => n|:auto|:all: il numero di variabili da creare: n il numero specificato; :auto il numero necessario per contenere tutte le risposte; :all lo stesso numero di variabili delle variabili multydicotomy (default :auto)
  • :base => false|true: true inserisce 0 nelle variabili per rendere omogene le basi (default false)
  • :label => text: l’etichetta delle variabili
  • :drop => false|true: true elimina le variabili di origine (default false)
  • :before => true|varname: posiziona le variabili prima delle variabili di origine (true), della variabile indicata (varname)
  • :after => true|varname: posiziona le variabili dopo le variabili di origine (true), la variabile indicata (varname)

md_to_panel

Trasforma un set di variabili multidicotomy in nuove variabili adatte ad essere utilizzate nel pannello. Le variabili generate hanno un unico codice etichettato con l’etichetta della variabile originaria. Restituisce l’elenco delle variabili create.

Argomenti:

  • varlist: l’elenco delle variabili da trasformare
  • label: (opzionale) l’etichetta complessiva del gruppo. Specificando false, non viene messa nessuna etichetta di gruppo (appariranno come la colonna del totale)
  • root|varlist: (opzionale) la radice del nome delle nuove variabili o l’elenco delle nuove variabili. Se non specificato, i nomi delle variabili vengono generate automaticamente
  • code: (opzionale) il codice delle variabili multidicotomy (default 1)
1
2
3
4
5
6
7
8
 md_to_panel varlist, label, new_varlist, code

 md_to_panel s(:v10_,1..3,8,9), "POSSESSO BENI", :beni_, 1
 # poi, nel pannello
 panels.add :sesso, s(:beni_,1..5), :area

 # oppure direttamente nell'istruzione panels.add anche senza specificare i nomi
 panels.add :sesso, md_to_panel(s(:v10_,1..3,8,9), "POSSESSO BENI"), :area

rank_to_mc

Trasforma un set di variabili dove ciascuna variabile contiene l’ordine di scelta di un item in un set di variabili multicategory.
Il numero delle variabili creato è determinato dai valori trovati nel set di variabili di ordinamento o dal numero di nomi di variabili di destinazione.
La prima variabile conterrà l’item scelto per primo, la seconda quello scelto per secondo e così via.
Restituisce l’elenco delle variabili di destinazione.

Argomenti:

  • varlist => root|[]: l’elenco delle variabili con l’ordinamento e la radice del nome delle variabili multicategory oppure un vettore con i nomi delle variabili mc
  • :label => text: (opzionale) l’etichetta da attribuire al set di variabili
  • :levels => []: (opzionale) l’elenco delle etichette da assegnare ai livelli
  • :before => true|varname: posiziona le variabili prima delle variabili di origine (true), della variabile indicata (varname)
  • :after => true|varname: posiziona le variabili dopo le variabili di origine (true), la variabile indicata (varname)
1
2
3
4
5
6
7
8
 rank_to_mc s(:rk15_, 1..10) => :mc15_
 rank_to_mc s(:rk15_, 1..10) => :mc15_, :label => "D15. Ordine di scelta", :levels  => ["Item A", "Item B", "Item C", "Item D"]

 # solo le prime tre scelte
 rank_to_mc s(:rk15_, 1..10) => s(:mc15_, 1..3)

 # solo la prima scelta
 rank_to_mc s(:rk15_, 1..10) => [:f15]

rank_to_md

Trasforma un set di variabili dove ciascuna variabile contiene l’ordine di scelta di un item in un set di variabili multidicotomy.
Restituisce l’elenco delle variabili di destinazione.

Argomenti:

  • varlist => root|[]: l’elenco delle variabili con l’ordinamento e la radice del nome delle variabili multidicotomy oppure un vettore con i nomi delle variabili md
  • :n => #: il numero di scelte da registrare nelle variabili md (default tutte)
  • :label => text: (opzionale) l’etichetta da attribuire al set di variabili
  • :levels => []: (opzionale) l’elenco delle etichette da assegnare ai livelli
  • :before => true|varname: posiziona le variabili prima delle variabili di origine (true), della variabile indicata (varname)
  • :after => true|varname: posiziona le variabili dopo le variabili di origine (true), la variabile indicata (varname)
1
2
3
 rank_to_md s(:rk15_, 1..10) => :md15_, :label => "D15. Prime tre citate", :n => 3

 rank_to_md s(:rk15_, 1..10) => :md15_, :label => "D15. Prima citata", :n => 1

first_choice

Genera una variabile contenente la prima scelta da un set di variabili contenenti una graduatoria o un punteggio.
Restituisce il nome della variabile di destinazione.

Argomenti:

  • varlist => varname: il set di variabili con l’ordinamento/voto e il nome della variabile singola
  • :value => #|:min|:max: il valore che rappresenta la prima scelta. :min il valore minimo del set di variabili per ciascun record; :max il valore massimo del set di variabili per ciascun record. (default 1)
  • :last => true|false: false considera la prima occorrenza del valore, true considera l’ultima occorrenza del valore (default false)
  • :label => text: (opzionale) l’etichetta da attribuire alla variabile
  • :levels => :auto|false|{}|[]: i livelli della variabile di destinazione come {hash} o come [array]. Se :auto cerca di desumerli dalle variabili di origine. Default: se la variabile di destinazione esiste false, se la variabile non esiste :auto
  • :before => true|varname: posiziona la variabile prima delle variabili di origine (true), della variabile indicata (varname)
  • :after => true|varname: posiziona la variabile dopo le variabili di origine (true), la variabile indicata (varname)
1
first_choice s(:d10_, 1..12) => :d10, :label => "First choice"

fix_na

Sistema i valori dell’item di mancata risposta di un set di variabili dicotomiche, mettento 0 se il set di variabili non contiene nessuna citazione e 1 se il set di variabili contiene citazioni. Se il set di variabili non contiene nessun valore, anche l’item di mancata risposta sarà valorizzato a nil.
La variabile di mancata risposta deve esistere (altrimenti vedi if_none e net_if_none).

Argomenti:

  • varlist: l’elenco delle variabili multidicotomy (può contenere o meno la variabile di non risposta)
  • varna: il nome della variabile che identifica la mancata risposta al set di variabili multidicotomy
1
2
fix_na s(:d1_,1..8), :d1_9
fix_na s(:d1_,1..9), :d1_9

parse01

Converte una variabile stringa contenente una sequenza di valori 0/1 in un set di variabili dicotomiche.

Argomenti:

  • varname => root: il nome della variabile stringa e la radice del nome delle variabili multidicotomy
  • :label => text: (opzionale) l’etichetta complessiva del gruppo
  • :levels => []||{}: (opzionale) un array con l’elenco delle etichette degli item o un hash con il numero dell’item e l’etichetta dell’item
  • :true => []: (opzionale) l’elenco dei valori da considerare veri (default [1])
  • :false => []: (opzionale) l’elenco dei valori da considerare veri (default [0])
1
2
3
parse01 :m1 => :d1_

parse01 :m1 => :d1_, :false => [0, " "]

if_any, net_if_any

Crea una nuova variabile che è ugnale a 1 se almeno una delle variabili contiene il valore indicato e 0 in caso contrario. I casi considerati sono solo quelli che contengono almeno un valore valido nel set delle variabili.

La variante net_if_any identifica la variabile come net per il conteggio corretto del numero di risposte nelle tabelle multiple.
La variante if_any12 imposta :yes_no => [1,2].

Argomenti:

  • varlist: i nomi delle variabili del set
  • code|[codes]: il codice o i codici da considerare
  • varname: il nome della nuova variabile da calcolare
  • label: (opzionale) l’etichetta della nuova variabile
  • :levels => {}: (opzionale) i livelli della nuova variabile
  • :yes_no => []: (opzionale) i valori da assegnare alla nuova variabile (default i valori impostati nei parametri di configurazione md_true_value e md_false_value, tipicamente 1 e 0)
1
2
3
 if_any [:d7_2, :d7_3], 1, :x7, "EMOZIONI"
 if_any s(:v6_, 1..10), 1..3, :n6a, "Intende acquistare", :levels => {1 => "Sì", 0 => "No"}
 if_any s(:v6_, 1..10), 1..3, :n6b, "Intende acquistare", :yes_no => [1,2], :levels => {1 => "Sì", 2 => "No"}

if_all, net_if_all

Crea una nuova variabile che è ugnale a 1 se tutte le variabili contengono il valore indicato e 0 in caso contrario. I casi considerati sono solo quelli che contengono almeno un valore valido nel set delle variabili.

La variante net_if_all identifica la variabile come net per il conteggio corretto del numero di risposte nelle tabelle multiple.
La variante if_all12 imposta :yes_no => [1,2].

Argomenti:

  • varlist: i nomi delle variabili del set
  • code|[codes]: il codice o i codici da considerare
  • varname: il nome della nuova variabile da calcolare
  • label: (opzionale) l’etichetta della nuova variabile
  • :levels => {}: (opzionale) i livelli della nuova variabile
  • :yes_no => []: (opzionale) i valori da assegnare alla nuova variabile (default i valori impostati nei parametri di configurazione md_true_value e md_false_value, tipicamente 1 e 0)
1
 if_all s(:d7_,5..8), 1, :x7, "Sia ... sia ..."

if_none, net_if_none

Crea una nuova variabile che è ugnale a 1 se tutte le variabili non contengono il valore indicato e 0 in caso contrario. I casi considerati sono solo quelli che contengono almeno un valore valido nel set delle variabili.

La variante net_if_none identifica la variabile come net di mancate risposte per il conteggio corretto del numero di risposte nelle tabelle multiple.
La variante if_none12 imposta :yes_no => [1,2].

Vedi anche fix_na.

Argomenti:

  • varlist: i nomi delle variabili del set
  • code|[codes]: il codice o i codici da considerare
  • varname: il nome della nuova variabile da calcolare
  • label: (opzionale) l’etichetta della nuova variabile
  • :levels => {}: (opzionale) i livelli della nuova variabile
  • :yes_no => []: (opzionale) i valori da assegnare alla nuova variabile (default i valori impostati nei parametri di configurazione md_true_value e md_false_value, tipicamente 1 e 0)
1
 if_none s(:d7_,1..10), 1, :x7

if_only, net_if_only

Crea una nuova variabile che è ugnale a 1 se almeno una delle variabili del primo set contiene il valore indicato mentre nessuna delle variabili dell’altro set lo contengono. Il secondo set può anche contenere tutto l’insieme delle variabili, pTabs provvederà a sottrarre le variabili del primo set.

La variante net_if_only identifica la variabile come net per il conteggio corretto del numero di risposte nelle tabelle multiple.
La variante if_only12 imposta :yes_no => [1,2].

Argomenti:

  • varlist1: i nomi delle variabili del primo set
  • code|[codes]: il codice o i codici da considerare
  • varlist2: i nomi delle variabili del secondo set
  • varname: il nome della nuova variabile da calcolare
  • label: (opzionale) l’etichetta della nuova variabile
  • :levels => {}: (opzionale) i livelli della nuova variabile
  • :yes_no => []: (opzionale) i valori da assegnare alla nuova variabile (default i valori impostati nei parametri di configurazione md_true_value e md_false_value, tipicamente 1 e 0)
1
 if_only [:d7_3,:d7_5], 1, s(:d7_,1..10), :x7, "Solo 3 o 5"

combinations

Genera una variabile singola che contiene le combinazioni di un set di variabili multiple.

Argomenti:

  • [varlist] => :varname o [varlist] => [:varname, "label"]: il set di variabili multiple, il nome della variabile singola e , opzionalmente, l’etichetta della variabile singola
  • :code => value: il codice da considerare (default il valore impostato nel parametro di configurazione md_true_value)
  • :labels => [list]: le etichette da utilizzare per generare le etichette della variabile singola. Devono corrispondere al numero delle variali multiple. Se non specificato, utilizza i nomi delle variabili di origine
  • :sep => "string": il testo per separare le etichette (default -)
  • :full => false|true: produce tutte le combinazioni, anche quelle con nessuna frequenza (default false). Attenzione al numero di combinazioni, può essere molto lento o impossibile da calcolare: 5 items => 31 combinazioni; 10 => 1.023; 20 => 1.048.575; 25 => 33.554.431
  • :sort => :a|:na|:nv|:v: il metodo di ordinamento dei livelli (default :nv):
    • :a: alfabetico
    • :na: per numero di items e alfabetico
    • :nv: per numero di items e secondo l’ordine delle variabili
    • :v: secondo l’ordine delle variabili

Restituisce il nome della variabile creata.

1
2
3
4
5
6
7
8
 combinations varlist => [newvar, "label"], :code => value, :labels => [list], :sep => "string"

 combinations s(:v10_,4) => :x10
 combinations s(:v10_,4) => :x10, :code => 1, :labels => %w(A B C D), :sep => "/"

 varlist = s(:v10_,4)
 lbls = LETTERS[0..varlist.size-1]
 combinations varlist => [:x10, "Combination variable"], :code => 1, :labels => lbls, :full => true

anycomb

Genera un set di variabili dicotomiche che contengono combinazioni in or di un set di variabili multiple.

Argomenti:

  • [varlist] => :varname o [varlist] => [:varname, "label"]: il set di variabili multiple, la radice del nome delle nuove variabili e , opzionalmente, l’etichetta delle nuove variabili
  • :code => value: il codice da considerare (default il valore impostato nel parametro di configurazione md_true_value)
  • :items => [list]: i nomi da utilizzare per generare i nomi e le etichette delle variabili. Devono corrispondere al numero delle variali multiple. Se non specificato, utilizza i nomi delle variabili di origine

Restituisce l’elenco delle variabili create.

1
2
3
4
5
6
7
8
 anycom varlist => [root, "label"], :code => value, :items => [list]

 anycom s(:v10_,4) => :or10_
 anycom s(:v10_,4) => :or10_, :code => 1, :items => %w(A B C D)

 varlist = s(:v10_,4)
 lbls = LETTERS[0..varlist.size-1]
 anycom varlist => [:or10_, "Combination variable"], :code => 1, :items => lbls

combine

Calcola il totale (somma logica) tra diversi set di variabili. I set di variabili possono essere composti da una batteria di variabili multiple (multidicotomy) o da una variabile singola.
Fino alla versione 2.6.26, i codici delle variabili e i nomi delle variabili multiple devono corrispondere esattamente ed essere nell’ordine corretto.
Dalla versione 2.6.27, non tutti i codici devono essere necessariamente presenti in tutte le variabili, ma a parità di codice, l’item deve essere lo stesso.

  • var|root, var|root, ...: un elenco di variabili singole o radici di variabili multiple da sommare
  • :codes => []|n1..n2: un Array o un Range con i codici da considerare nelle singole e nelle multiple (non vanno inseriti i codici non risponde|non sa|ecc.)
  • :into => root: la radice del set di variabili multiple che deve essere generato
  • :noresp => [code, label]: (opzionale) il codice del non risponde da generare nel nuovo set di variabili
  • :label => "": (opzionale) l’etichetta complessiva della variabile multipla
1
2
3
4
 # spontanea :s1, singola
 # spontanea :m2, multipla
 # sollecitata :m3 multipla
 combine :s1, :m2_, :m3_, :codes => 1..12, :noresp => [99, "Non indica"], :into => :x4_, :label => "CONOSCENZA TOTALE"

overall

Calcola il totale (somma logica) tra diversi set di variabili multiple.

Sono disponibili due sintassi diverse.

Argomenti sintassi 1:

  • varlist => [varlist, varlist, ...]: un hash con come chiave il set di variabili finali che verranno create e come valori i set di variabili da sommare
  • :noresp => {varname => label}: (opzionale) un hash con il nome della variabile e l’etichetta. Calcola il numero di casi che non hanno nessuna citazione nelle variabili finali. I casi considerati sono solo quelli che contengono almeno un valore valido nel set delle variabili.
  • :labels => []: (opzionale) un vettore con le etichette degli items. Se non specificato, le etichette sono ricavate dalle variabili originarie
1
2
 # spontanea + sollecitata
 overall s(:x7_,1..10) => [s(:d7a_,1..10), s(:d7b_,1..10)], :noresp => {:x7_99 => "Nessuno di questi"}

Argomenti sintassi 2:

  • name: la radice del nome delle variabili finali
  • template: la stringa con i segnaposti per le due sequenze necessarie per comporre i nomi delle variabili. Le sequenze possono essere vettori di numeri o vettori di stringhe:
    • %{s}: il segnaposto per l’identificatore dei diversi set di variabili (:sets)
    • %{i}: il segnaposto per l’identificatore degli items all’interno di ciascun set di variabili (:items)
  • :sets => []: un vettore con la sequenza che identifica i diversi set di variabili (%{s})
  • :items => []: un vettore con la sequenza che identifica gli items all’interno di ciascun set di variabili (%{i})
  • :noresp => {code => label}: (opzionale) un hash con il codice e l’etichetta. Calcola il numero di casi che non hanno nessuna citazione nelle variabili finali. I casi considerati sono solo quelli che contengono almeno un valore valido nel set delle variabili.
  • :labels => []: (opzionale) un vettore con le etichette degli items. Se non specificato, le etichette sono ricavate dalle variabili originarie
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 # spontanea + sollecitata
 overall :t7_, "%{s}_%{i}",
         :sets => ["d7a", "d7b"],
         :items => 1..10,
         :noresp => {99 => "n.a."}

 # batterie di item riferite a oggetti diversi
 overall :tot3_, "d3_%{s}_%{i}",
         :sets => 1..7,
         :items => 1..5,
         :noresp => {9 => "n.a."}

 # batterie di item riferite a oggetti diversi
 overall :tot4_, "d4_%{s}_%{i}",
         :sets => ["1", "2", "3a", "3b", "3c", "4"],
         :items => [1, 2, 3, 4, 5],
         :labels => ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"],
         :noresp => {9 => "Nessuno di questi"}

Suggerimento

Un vettore di stringhe come ["1", "2", "3a", "3b", "3c", "4"] può anche essere creato più velocemente con questa sintassi: %w(1 2 3a 3b 3c 4).

autorecode

Ricodifica automaticamente una variabile stringa in una variabile categoriale.

La variabile stringa originaria verrà sovrascritta e salvata in una copia.

Argomenti:

  • :vars => varlist: l’elenco delle variabili da ricodificare
  • :sort => :a|:d: (opzionale, default :a) l’ordine dei livelli risultanti: :a ordine aspendente; :d ordine discendente
  • :drop => false|true: (opzionale, default false) false salva una copia della variabile originaria; true elimina la variabile originaria
  • :root => "string": (opzionale, default __string__) prefisso per la copia della variabile originaria
  • :levels => {}: (opzionale) i livelli delle variabili; eventuali voci aggiuntive verranno codificate oltre i livelli definiti
  • :meta => filename: (opzionale) utilizza per le ricodifiche un file xlsx con i codici e le etichette delle variabili (Tabella di metadati). Variabili non presenti nel file di metadati verranno ignorate
  • :ignore => "string": (opzionale) caratteri da ignorare nelle stringhe di dati
  • :ignore_symbol => false|true: (opzionale, default false) ignora simboli presenti nelle stringhe di dati: -+*=<>\[\](){}|\/,.;:°^!?
  • :ignore_number => false|true: (opzionale, default false) ignora numeri presenti nelle stringhe di dati
  • :ignore_space => false|true: (opzionale, default false) ignora spazi presenti nelle stringhe di dati
  • :ignore_case => false|true: (opzionale, default false) ignora maiuscole/minuscole
  • :syntax => false|:levels|:both: (opzionale, default false) :levels stampa le istruzioni per i livelli; :both stampa anche le istruzioni per la label

Passando codici ed etichette con :levels o con :meta, la corrispondenza verrà cercata non solo nelle etichette, ma anche nei codici, ovvero i dati potranno contenere un misto di etichette e di codici.

Con :meta è possbile convertire un file che contiene le etichette dei valori al posto dei dati, in un normale file codificato. Vedi anche xlsx.convert.

autorecode!

Come autorecode, ma con i parametri :drop => true, :syntax => :levels.

vardiff

Confronta i dati di due variabili e copia i valori differenti in una nuova variabile.

Argomenti:

  • var1: il nome della prima variabile da confrontare
  • var2: il nome della seconda variabile da confrontare
  • :into => varname: il nome della nuova variabile con i valori differenti
  • :blank => value: il valore da utilizzare nel caso il valore differente sia blank (default: nil)
  • :copy => 1|2: 1 copia il valore dalla prima variabile, 2 copia il valore dalla seconda variabile (default: 2)
1
vardiff :id_comu1, :id_comu2, :into => :comu_diff, :blank => 999

derotate

Attenzione

Funzionalità in test. Verificare il risultato.

Scambia le risposte tra diversi set di variabili secondo la rotazione di appartenenza di ciascun caso.

Argomenti:

  • Le rotazioni possono essere definite in due modi:
    • da una variabile numerica che indica l’appartenenza del record a una rotazione (cella).
      • :rot => {varname => [[],[],...]}: specifica la variabile che contiene l’identificativo della rotazione e lo schema delle rotazioni come vettore multidimensionale
    • da una serie di variabili numeriche che identificano l’oggetto di ciascun set di domande somministrate. Il numero di queste variabili deve essere uguale al numero di set di variabili da derotare.
      • :rot => varlist: specifica l’elenco delle variabili che contendono l’identificativo dell’item oggetto della valutazione
  • :init: le variabili da derotare
    • :init => [[:a1, :b1, :c1], [:a2, :b2, :c2], ...]: indicate esplicitamente come vettore multidimensionale
    • :init => ["a%", "b%", "c%"]: un vettore con dei nomi che contengono il segnaposto % per il numero di ciascuna serie
  • :final: le variabili di destinazione
    • :final => [[:x1, :y1, :z1], [:x2, :y2, :x2], ...]: indicate esplicitamente come vettore multidimensionale
    • :final => ["x%", "y%", "z%"]: un vettore con dei nomi che contengono il segnaposto % per il numero di ciascuna serie
    • se omesso verranno sovrascritte le variabili iniziali (le serie di variabili iniziali e quelle finali devono coincidere)
  • :prefix => "stringa": se viene omesso :final e :init è indicato come lista con il segnaposto, la stringa di caratteri verrà anteposta al nome delle variabili iniziali per formare le variabili finali

Nell’esempio, le ipotetiche domande a, b e c vengono ripetute per tre volte per testare tre diversi oggetti. Le domande vengono somministrate ai vari soggetti in quattro diverse sequenze. E’ da notare che il numero di oggetti da testare e il numero di permutazioni non sono necessariamente uguali.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
 # Metodo 1: con id rotazione

 # :rotazione è la variabile che identifica la rotazione/cella
     rotazione
   1     2
   2     4
   3     3
   4     1
   5     1
   6     2
   ...

 # rschema contiene l'elenco delle permutazioni utilizzate (deve corrispondere ai livelli della variabile :rotazione)
 rschema = [ [1,2,3],            # per :rotazione = 1
             [2,3,1],            # per :rotazione = 2
             [3,1,2],            # per :rotazione = 3
             [1,3,2] ]           # per :rotazione = 4

 derotate :init => ["a%","b%"]+s("c%_#",1..10), :prefix => 'x', :rot => {:rotazione => rschema}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 # Metodo 2: con variabili sequenza

 # le variabili :ro1, :ro2 e :ro3 contengono la sequenza degli elementi (l'ordine dei test)
     ro1 ro2 ro3
   1   2   3   1
   2   1   3   2
   3   3   1   2
   4   1   2   3
   5   1   2   3
   6   2   3   1
   ...

 derotate :init => ["a%","b%"]+s("c%_#",1..10), :prefix => 'x', :rot => s(:ro,3)

seqvars

Genera una sequenza numerica e inserisce ciascun elemento in una variabile.

Argomenti:

  • varlist: le variabili in cui inserire la sequenza numerica. Se non esistono verranno create.
  • :from => #|varname: il numero da cui partire o il nome di una variabile contenente il numero (default 1)
  • :to => #|varname: il numero a cui arrivare o il nome di una variabile contenente il numero
  • :step => #: l’incremento tra un elemento e l’altro della serie (default 1)
  • :n => #: il numero di elementi da generare (default il numero di variabili)
  • :rnd => true|false: randomizza il risultato (default false)
  • :seed => #: il seed per replicare i risultati (quando specificato :rnd)
  • :rev => true|false: ordina in senso inverso il risultato (default false)
  • :size => #: la dimensione delle variabili se non esistono (default 1)
1
2
3
4
5
seqvars s(:a,1..3)

seqvars s(:b,1..10), :to => :maxnum, :random => true

seqvars s(:c,1..15), :from => 10, :step => 10

.mutate_temp

Il metodo .mutate_temp, applicabile a un nome di variabile o a una lista di nomi di variabili, memorizza e ripristina i dati delle variabili, le etichette e i valori mancanti.
Ovvero, varlist.mutate_temp ...:

  • memorizza i dati e gli attributi contenuti nelle variabili elencate (varlist)
  • esegue il codice contenuto nel blocco
  • ricopia i dati e gli attributi mememorizzati nelle variabili (varlist)

Argomenti:

  • :data => false|true: se true memorizza e ripristina i dati delle variabili (default true)
  • :attributes => false|true: se true memorizza e ripristina le etichette delle variabili, le etichette dei livelli e le definizioni dei valori mancanti (default true)
1
2
3
4
:eta.mutate_temp do |v|
  classify :eta => {[1,2] => "14-24 anni", [3,4] => "25-34 anni"}
  cat :eta
end
1
2
3
4
5
6
7
base_multi :all
[1,2,3,4].each do |i|
   s(:v7_,1..10).mutate_temp(:attributes => false) do |varlist|
     valid_if varlist, :v6 => i
     md varlist
  end
end
1
2
3
4
s(:v7_,1..10).mutate_temp(:data => false) do |varlist|
  levels s(:v7_,1..10) => {1 => "Sì", 0 => "No"}
  xcat s(:v7_,1..10)
end

Attenzione

Solo l dati delle variabili su cui si applica il metodo verranno ripristinate, non eventuali altre variabili modificate all’interno del blocco

Suggerimento

.mutate_temp è utile, per esempio, quando occorre selezionare un sottoinsieme di casi, ma non è possibile utilizzare la funzione filter, quando si vuove riclassificare in modo temporaneo una variabile o modificarne temporaneamente le etichette