Variabili: etichette e livelli

In relazione alle etichette delle variabile si veda anche File di dati>Metadati e le funzioni get_label, get_labels, get_levels, get_levels.

Un modo per lavorare sulle etichette senza doverle ridigitare, è quello di far stampare le vecchie etichette e incollarle nello script:

1
2
3
4
p get_levels(:titolo) # => stampa nel log: {1=>"nessun titolo-elementare", 2=>"Media inferiore", 3=>"Media superiore", 4=>"Laurea"}

# copia e incolla nello script per modificarle:
levels :titolo => {1=>"Nessun titolo/Elementare", 2=>"Media inferiore", 3=>"Media superiore", 4=>"Laurea"}

label

Imposta l’etichetta della variabile.

1
2
3
4
5
 label var => label, varlist => label

 label :sex => "Sesso dell'intervistato"
 label :sex => "SESSO", :area => "MACROAREA"
 label [:mcr1, :mcr2, :mcr3] => "MACROAREA"

levels

Imposta le etichette dei livelli.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 levels var => labels, ...
 levels :sesso => ['M', 'F']

 levels var => {level => label, level => label}, ...
 levels :area => {3 => "CENTRO", 4 => "Sud e Isole"}

 levels :sesso => ['M', 'F'], :area => {3 => "CENTRO", 4 => "Sud e Isole"}

 levels varlist => ...
 levels s(:r100,8) => ["Sì", "No"]

 # elimina le etichette
 levels :v1 => {}
 levels :v1 => nil
 levels :v1

add_label

Aggiunge la stringa specificata all’etichetta della variabile.

  • :sep => "" permette di specificare una stringa di separazione (default ""). Nel caso l’etichetta originaria sia vuota, non viene inserito nessun carattere di separazione
  • :pos => :left|:right specifica se la stringa deve essere messa a sinistra/inizio o a destra/fine (default :right)
1
2
3
4
5
 add_label varlist => labels, :sep => "string", :pos => :right

 add_label :v1 => " / (Totale)"
 add_label s(:v2_,3) => ["X", "Y", "Z"], :sep => "_"
 add_label :v3.to(:v10) => "SEZ.1 - ", :pos => :left

add_levels

Aggiunge o sostituisce nuove etichette di livelli.

1
2
3
4
5
 add_levels varlist => levels

 add_levels :v1 => {98 => "Non sa", 99 => "Non risponde"}
 add_levels [:v10,:v20] => {99 => "Non sa"}
 add_levels s(:v3_,10) => {7 => "Rosso"}

autolevels

Inserisce delle etichette uguali ai valori della variabile. Se la variabile ha già etichette, inserisce solo eventuali nuove etichette per livelli non ancora etichettati.

copy_label

Etichetta una o più variabili con l’etichetta di altre variabili.

1
2
3
4
5
6
 copy_label var|varlist => var|varlist

 copy_label :v1 => :r1
 copy_label :v1 => [:r11, :r12, :r13]

 copy_label [:v7_1, :v7_2, :c7_3] => [:x7_1, :x7_2, :x7_3]

copy_levels

Etichetta i livelli di una o più variabili con le etichette dei livelli di altre variabili.

1
2
3
4
5
6
 copy_levels var|varlist => var|varlist

 copy_levels :v1 => :r1
 copy_levels :v1 => [:r11, :r12, :r13]

 copy_levels [:v7_1, :v7_2, :c7_3] => [:x7_1, :x7_2, :x7_3]

copy_labels

Esegue in successione copy_label e copy_levels.

relevel

Riordina i livelli di una o più variabili riordinando anche le etichette. Agisce ricodificando i codici delle variabile.

Argomenti:

  • varlist: l’elenco dei nomi delle variabili
  • valuelist: l’elenco dei codici della variabile nell’ordine desiderato
  • :a [,endcodes]: ordina alfabeticamente le etichette (endcodes = livelli da tenere in fondo)
  • :d [,endcodes]: ordina alfabeticamente le etichette in senso decrescente(endcodes = livelli da tenere in fondo)
  • :seq [,start]: rinumera sequenzialmente i livelli partendo da 1 o da start
  • :rev [,endcodes]: inverte l’ordine dei livelli (endcodes = livelli da tenere in fondo)
  • :freq [,endcodes]: ordina in base alle frequenze pesate in senso crescente (endcodes = livelli da tenere in fondo)
  • :dfreq [,endcodes]: ordina in base alle frequenze pesate in senso decrescente (endcodes = livelli da tenere in fondo)
  • :freq_u [,endcodes]: ordina in base alle frequenze non pesate in senso crescente (endcodes = livelli da tenere in fondo)
  • :dfreq_u [,endcodes]: ordina in base alle frequenze non pesate in senso decrescente (endcodes = livelli da tenere in fondo)
  • :top, valuelist: sposta i codici indicati all’inizio
  • :bottom, valuelist: sposta i codici indicati alla fine
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 # riordina i livelli della variabile v1
 relevel :v1, 3, 2, 5, 4, 1

 # riordina le etichette della variabile :brand in senso alfbetico, lasciando in fondo i codici 98 e 99
 relevel :brand, :a, [98,99]

 # inverte l'ordine dei livelli della variabile v2 ad eslusione del codice 9 che viene tenuto in fondo
 relevel :v2, :rev, 9

 # riordina i livelli in base alle frequenze
 relevel [:v3, :v4, :v5], :freq

 # riordina i livelli in base alle frequenze in senso decrescente
 relevel s(:101_,7), :dfreq

 # sposta i codici 5 e 7 all'inizio
 relevel :v3, :top, 7, 5

 # sposta il codice 1 in fondo
 relevel :v3, :bottom, 1

 # rinumera i livelli partendo da 1
 relevel :brand, :seq

reverse

Riordina i livelli di una o più variabili invertendo i codici e riordinando anche le etichette (cfr. relevel).

Argomenti:

  • varlist: l’elenco dei nomi delle variabili
  • valuelist: l’elenco dei codici che devono rimanere invariati
1
2
3
4
5
 reverse :v1

 reverse s(:v2_,10), 9

 reverse :v3, 98, 99

changelev

Modifica i codici di una variabile, spostando anche le etichette (cfr. relevel).

Argomenti:

  • varlist: l’elenco dei nomi delle variabili
  • valuepairs|:compact: le coppie di codici da modificare con il vecchio e il nuovo valore o :compact per ricodificare in modo progressivo a partire da 1 i livelli della variabile
1
2
3
4
5
 changelev :d5 => {0 => 9}

 changelev :x10 => {0=>1, 1=>0}

 changelev :marche => :compact

switch

Scambia due livelli di una o più variabili scambiando anche le etichette (cfr. relevel).

1
2
3
 switch :x10, 1, 0

 switch :v30, 70, 75

lprefix

Aggiunge un prefisso alle etichette dei livelli della variabile.

1
2
3
4
 lprefix varlist => prefix

 lprefix :v123 => "Kg. "
 lprefix [:v123.1,:v123.2] => "Kg. "

lsuffix

Aggiunge un suffisso alle etichette dei livelli della variabile.

1
2
3
4
 lsuffix varlist => suffix

 lsuffix :etaf => " anni"
 lsuffix [:eta1f, :eta2f, :eta3f] => " anni"

label_to_level

Copia l’etichetta della variabile come etichetta di un livello.

1
2
3
 label_to_level varlist => level_id

 label_to_level s(d7_,10) => 1

level_to_label

Copia l’etichetta di livello come etichetta della variabile.

1
2
3
 level_to_label level_id => varlist

 level_to_label 1 => s(d7_,10)

simplify_labels

Elimina da un set di variabili la parte uguale dell’etichetta.

Argomenti:

  • varlist: l’elenco delle variabili
  • drop_from => string|regex: (opzionale) una stringa o una espressione regolare che definisce il testo a partire dal quale l’etichetta va ripulita fino alla fine. E’ utile quando le etichette sono state troncate e il testo superfluo rimasto in fondo all’etichetta è differente per ciascuna variabile
1
2
3
4
5
 simplify_labels s(:d19_,6)

 simplify_labels s(:d19_,6), :drop_from => " Rispondere su una"

 simplify_labels s(:d19_,6), :drop_from => / \*\(Rispondere/

simplify_levels

Elimina da un set di variabili la parte uguale dell’etichetta di uno dei livelli.

Argomenti:

  • varlist: l’elenco delle variabili
  • code: il codice del livello su cui agire (default 1)
  • drop_from => string|regex: (opzionale) una stringa o una espressione regolare che definisce il testo a partire dal quale l’etichetta va ripulita fino alla fine. E’ utile quando le etichette sono state troncate e il testo superfluo rimasto in fondo all’etichetta è differente per ciascuna variabile
1
2
3
 simplify_levels s(:d19_,6)

 simplify_levels s(:d19_,6), 1

drop_levels

Elimina tutti i livelli della variabile che hanno frequenza uguale a zero.

1
2
3
4
 drop_levels varlist
 drop_levels :d1
 drop_levels [:d1, :d2, :d3]
 drop_levels s(:x10_,8)

delete_levels

Elimina le etichette dei livelli specificati della variabile. Eventuali dati presenti per quei livelli non verranno modificati.

1
2
3
4
 delete_levels :d1 => 99
 delete_levels [:d2, :d3] => 9
 delete_levels :d4 => [0,99]
 delete_levels :d5 => 97..99