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"]