Variabili: generazione e gestione¶
new o create¶
Genera nuove variabili.
Argomenti:
- varname|[varlist]: il nome di una variabile o un elenco di variabili
- un hash di opzioni:
- :label => "string" l’etichetta della variabile
- :levels => []|{} i livelli della variabile come array di etichette o come hash codice-etichetta
- :labels => []|{} come :levels
- :type => :symbol: il tipo di dato della variabile: :integer|:float|:single|:md|:mc|:string|:date|:time|:datetime|:logic|:system|:info. Accetta anche le abbreviazioni: :int|:flt|:sng|:str|:dt|:dtime|:tm|:log|:sys
- :size => n|n.d: la dimensione della variabile o dimensione.decimali
- :ndec => n: il numero di decimali
- :value => val: il valore a cui inizializzare la variabile
- :missing => []: l’elenco dei valori mancanti
- alternativamente è possibile indicare nell’ordine: type, size.dec, value, options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # vars, options
new :xeta, :xn7, :x1
new :xetacon, :label => "Età puntuale"
create :xsesso, label: "SESSO", levels: {1 => "M", 2 => "F"}
create :xx1, levels: ["A","B","C","D"]
create :xarea, label: "AREA GEOGRAFICA", levels: ["NO", "NE", "C", "S"]
create s(:xx7_,10), :levels => ["Sì","No"]
create :xd2, :levels => ["X","Y","Z"]
create :xd3, :levels => {1=>"X", 2=>"Y", 3=>"Z"}
new s(:x,9), :value => 1
# vars, type, size.dec, value, options
new :v1, :int, 1
new :v2, :int, 1, 9
new :v3, :str, 20, :label => "Etichetta V3"
new :v4, :flt, 4.2, 1.0
|
Nota
Le variabili di tipo :logic, :system e :info hanno un trattamento particolare, per esempio vengono escluse dal riconoscimento dei gruppi multipli e dall’autotab.
create1¶
Genera nuove variabili utilizzando la sintassi della vecchia versione di pTabs(1).
int¶
Genera nuove variabili in formato intero.
Argomenti:
- il nome di una variabile o un elenco di variabili
- :value (opzionale) il valore da assegnare alla variabile o nil
- :label (opzionale) l’etichetta della variabile
- :levels (opzionale) le etichette dei livelli della variabile cone Array o come Hash
float¶
Genera nuove variabili in formato float (numero decimale).
Argomenti:
- il nome di una variabile o un elenco di variabili
- :value (opzionale) il valore da assegnare alla variabile o nil
- :size (opzionale) il formato della variabile come #.# (numero_interi.numero_decimli)
- :label (opzionale) l’etichetta della variabile
string¶
Genera nuove variabili in formato stringa.
Argomenti:
- il nome di una variabile o un elenco di variabili
- :value (opzionale) il valore da assegnare alla variabile o nil
- :size (opzionale) la dimensione della variabile
- :label (opzionale) l’etichetta della variabile
copy¶
Genera una copia di una variabile esistente. Restituisce l’elenco delle variabili create.
Argomenti:
- elenco variabili esistenti => elenco nuove variabili: le nuove variabili verranno create con i nomi specificati. Se si specifica una sola variabile di origine e più variabili di destinazione, verrà usata la stessa variabile di origine per tutte le variabili di destinazione
- elenco variabili esistenti: le nuove variabili verranno create con un nome generato automaticamente o come combinazione del nome della variabile di origine con i parametri pref o suff
- :pref => "string" (opzionale) il prefisso per generare il nome della variabile
- :suff => "string" (opzionale) il suffisso per generare il nome della variabile
- :values => true|false (opzionale) true copia i dati (default), false non copia i dati, ma crea solo le variabili copiando tutti gli altri attributi dalle variabili di origine
- :if => espressione (opzionale) copia i dati solo se la condizione specificata è vera
- :ifnot => espressione (opzionale) copia i dati solo se la condizione specificata è falsa
1 2 3 4 5 6 7 8 9 10 11 12 | copy oldvar => newvar
copy :d1 => :d1bis, :d2 => :d2bis
copy [:d1, :d2] => [:d1bis, :d2bis]
copy :v1 => s(:x1_,10), :values => false
copy [:d2, :d1, :d4, s(:q1_,1..10)], :suff => "_x"
copy :d2 => :x2, :if => {:d3 => 2}
copy [:d2, :d1, :d4, s(:q1_,1..10)], :pref => "sud_", :if => {:area => 4}
|
Dato che copy restituisce i nomi delle variabili create, è possibile utilizzarlo direttamente all’interno di altre istruzioni:
1 2 3 | panel_add :sample, copy([:sesso, :eta, :titolo], :pref => "sud_", :if => {:area => 4})
panel_add :sample, copy([:sesso, :eta, :titolo], :ifnot => {:area => [1,2]})
|
rename¶
Rinomina le variabili. Restituisce l’elenco delle variabili create.
Argomenti:
- elenco variabili esistenti => elenco nuovi nomi variabili
- espressione regolare => sostituzione
1 2 3 4 5 6 7 8 | rename old_name_list => new_name_list
rename :sesso => :sex
rename [:sesso, :d1, 'd5.1'] => [:sex, :d100, :d5]
rename s(:d8_,7) => s(:x8_,7)
rename /_\d{4}__r\$_/ => '' # esempio: "jan_2014__r$_" => "jan"
rename /x(\d{1,2})_(\d{4})/ => 'y\2m\1' # esempio: "x11_2019" => "y2019m11"
|
delete¶
Cancella le variabili elencate.
keep¶
Tiene solo le variabili elencate.
reorder¶
Riordina le variabili. Con un elenco parziale di variabili, sposta all’inizio le variabili indicate e a seguire le restanti variabili. Senza nessun argomento raggruppa e ordina i gruppi di variabili con la stessa radice. Inserendo come ultimo argomento un numero, inserisce le variabili in quella posizione.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | vars = %w(area sesso etaq eta name d7_9 d7_2 d7_1 d7_10 d7_5 d7_6 d7_7 d7_8 d7_3 d5 peso id_comune d7_99 d7_4 ser_no)
spss.open "demo_data20", :keep => vars
reorder
p allvars
# => ["area", "sesso", "etaq", "eta", "name", "d7_1", "d7_2", "d7_3", "d7_4", "d7_5", "d7_6", "d7_7", "d7_8", "d7_9", "d7_10", "d7_99", "d5", "peso", "id_comune", "ser_no"]
reorder :ser_no, :peso, :name
p allvars
# => ["ser_no", "peso", "name", "area", "sesso", "etaq", "eta", "d7_9", "d7_2", "d7_1", "d7_10", "d7_5", "d7_6", "d7_7", "d7_8", "d7_3", "d5", "id_comune", "d7_99", "d7_4"]
reorder :etaq, :eta, 4
p allvars
# => ["ser_no", "peso", "name", "etaq", "eta", "area", "sesso", "d7_9", "d7_2", "d7_1", "d7_10", "d7_5", "d7_6", "d7_7", "d7_8", "d7_3", "d5", "id_comune", "d7_99", "d7_4"]
|