Funzioni informative¶
Le funzioni seguenti restituiscono informazioni relative alle variabili e ai dati presenti nel dataset. Sono utili per ispezionare i dati, per generare titoli e note o per condizionare il comportamento e rendere più flessibile lo script di pTabs.
Variabili¶
info¶
info stampa nell’output delle informazioni relative al dataset attivo. Restituisce un hash con le numerosità.
1 2 3 4 5 6 7 8 9 | + Dataset [0] 180 record e 652 variabili:
+ valide: 229
+ vuote: 423
+ stringa: 34
+ numeriche: 618
+ integer: 28
+ float: 0
+ single: 590
+ date-time: 0
|
exist?¶
Controlla se le variabili indicate sono presenti nel dataset corrente e restituisce true se tutte le variabili esistono e false se almeno una variabile non è stata trovata.
1 2 3 | cat :v10045 if exist?(:v10045)
ord [:eta, :etaq] if exist?(:eta, :etaq)
md s(:v100_, 1..10) if exist?(s(:v100_, 1..10))
|
exist!¶
Controlla se le variabili indicate sono presenti nel dataset corrente e interrompe l’esecuzione se una o più variabili non esistono. Restituisce true se tutte le variabili sono state trovate.
1 | exist! :eta, :area, s(:d7_, 1..10)
|
not_exist!¶
Controlla se le variabili indicate sono presenti nel dataset corrente e interrompe l’esecuzione se una o più variabili esistono. Restituisce true se tutte le variabili non sono state trovate.
1 | not_exist! :eta, :area, s(:d7_, 1..10)
|
existing, existing!¶
existing controlla se le variabili indicate sono presenti nel dataset corrente e restituisce l’elenco (Array) delle solo variabili esistenti.
La variante existing! stampa nel log le variabili non esistenti.
1 2 | cat existing(:v1, :v2, :v3)
md existing(s(:d7_, 1..99))
|
search¶
Cerca nei nomi e nelle etichette delle variabili la stringa o l’espressione regolare indicata. Stampa nel log i risultati trovati e restituisce un vettore con l’elenco delle variabili.
1 2 3 4 5 6 7 8 9 10 11 12 13 | search "spesso"
# ... searcing "spesso" in variables...
# > [d1] Con quale frequenza frequenza di solito vai...?
# 1 = una volta alla settimana o più spesso
# 5 = meno spesso
# > [d34] Abitualmente con che frequenza leggi la stampa periodica?
# 1 = 1 volta alla settimana o più spesso (5)
# > [d35] Abitualmente con che frequenza leggi la stampa periodica gratuita, informativa sulla vita cittadina, distribuita gratuitamente nei locali (es. Urban, Zero, 2night, etc.)?
# 1 = 1 volta alla settimana o più spesso (5)
# ... found 3 variables
search /^\d+/i # cerca etichette che iniziano con un numero
|
vars, allvars¶
vars o allvars restituisce un vettore con i nomi di tutte le variabili presenti nel file di dati.
str_vars, num_vars, int_vars, flt_vars, sng_vars, dtm_vars¶
- str_vars: restituisce l’elenco delle variabili di tipo string presenti nel file di dati
- num_vars: restituisce l’elenco delle variabili numeriche presenti nel file di dati
- int_vars: restituisce l’elenco delle variabili di tipo integer presenti nel file di dati
- flt_vars: restituisce l’elenco delle variabili di tipo float presenti nel file di dati
- sng_vars: restituisce l’elenco delle variabili di tipo single presenti nel file di dati
- dtm_vars: restituisce l’elenco delle variabili di tipo date, time e datetime presenti nel file di dati
vars?¶
vars? stampa nella finestra di output il numero e l’elenco dei nomi delle variabili presenti nel file di dati.
usedvars¶
usedvars restituisce un vettore con i nomi di tutte le variabili utilizzate nelle tavole (pannelli, fiancate, filtri e pesi).
1 2 3 4 5 | # stampa nel log le variabili utilizzate nella tabulazione
p usedvars
# esporta un file contenente solo le variabili utilizzate nella tabulazione
xlsx.save "dati", :keep => usedvars
|
valid?¶
valid?(varlist) restituisce true se la variabile contiene casi validi, altrimenti restituisce false. Se viene passata più di una variabile, restituisce true se almeno una variabile contiene dei casi validi.
empty?¶
empty?(varlist) restituisce true se la variabile contiene solo casi mancanti, altrimenti restituisce false. Se viene passata più di una variabile, restituisce true se tutte le variabili contengono solo casi mancanti.
valid_vars¶
valid_vars(varlist) restituisce l’elenco delle variabili che contengono valori validi tra le variabili indicate. Se non viene specificata nessuna variabile, controlla tutte le variabili presenti nel dataset.
empty_vars¶
empty_vars(varlist) restituisce l’elenco delle variabili vuote tra le variabili indicate. Se non viene specificata nessuna variabile, controlla tutte le variabili presenti nel dataset.
vars_with_values¶
vars_with_values(varlist, valuelist) restituisce l’elenco delle variabili che contengono almeno uno dei valori indicati.
vars_without_values¶
vars_without_values(varlist, valuelist) restituisce l’elenco delle variabili che non contengono nessuno dei valori indicati.
Etichette e livelli¶
get_label¶
get_label(varname) restituisce la stringa con l’etichetta della variabile.
get_labels¶
get_labels(varlist) restituisce un vettore con le etichette delle variabili.
1 2 3 | get_labels(s(:d7, 1..10)).rep do |label|
...
end
|
get_levels¶
get_levels(varname) restituisce un hash con i codici e le etichette dei livelli della variabile.
get_levels(varname).keys restituisce un array con solo i codici. get_levels(varname).values restituisce un array con solo le etichette.
1 2 3 4 5 | get_levels(:area).each do |code, lab|
filter :area => code, :label => "Area: "+lab
cat :d1
ord :d5
end
|
get_codes, get_values, get_codes_values¶
Restituiscono un array con i codici etichettati della variabile e/o i valori effettivamente presente nei dati.
- get_codes(varname): i codici dei livelli
- get_values(varname): i valori presenti nei dati
- get_codes_values(varname): l’unione dei due insiemi
1 2 3 | get_codes(:d6_5) # => [1, 2, 3, 4]
get_values(:d6_5) # => [0, 1, 2, 3]
get_codes_values(:d6_5) # => [0, 1, 2, 3, 4]
|
get_max_level¶
get_max_level(varname) restituisce il numero totale dei livelli della variabile. Equivale a get_max_level(varname).size.
Dataset¶
nrows¶
nrows restituisce il numero di record totale del dataset.
active_rows¶
Se è attivo un filtro, active_rows restituisce il numero di record filtrati, altrimenti restituisce il numero di record totale del dataset.
column¶
column(varname) restituisce un vettore con i dati della variabile. Se è attivo un filtro, restituisce solo i dati filtrati.
columns¶
columns(varlist) restituisce una matrice con i dati delle variabili. Se è attivo un filtro, restituisce solo i dati filtrati.
Dati¶
I seguenti metodi get_, nel caso sia attiva una variabile di ponderazione, restituiscono i dati ponderati
mentre le varianti che terminano per _u restituiscono sempre i dati non ponderati (unweighted).
Questi metodi, nel caso sia attivo un filtro, restituiscono i dati filtrati.
Argomenti generali:
- :ndec => #: il numero di decimali
get_base, get_base_u¶
get_base(varname) restituisce il numero di casi validi di una variabile.
1 2 3 4 5 6 | base_d5 = get_base(:d5)
if base_d5 > 100
ord :d5
end
ord :d1 if get_base(:d1) > 30
|
get_counts, get_counts_u¶
get_counts calcola le distribuzioni di frequenza di una variabile. Restituisce un vettore con un elemento per ciascun valore della variabile costituito a sua volta da un vettore di tre elementi: valore, etichetta valore, conteggio frequenze.
Argomenti:
- :drop: elimina i livelli con frequenze pari a zero
- :miss => true|false: aggiunge il conteggio dei valori mancanti (default false)
1 2 3 | get_counts(:area) # [[1, "Nord Ovest", 93], [2, "Nord Est", 50], [3, "Centro", 70], [4, "Sud", 87]]
filter :gender => 2
get_counts(:area) # [[1, "Nord Ovest", 46], [2, "Nord Est", 22], [3, "Centro", 34], [4, "Sud", 44]]
|
1 2 3 4 | get_counts(:d1, :drop).each do |code, lab, count|
filter :d1 => code, :label => "D1: #{lab} (n.#{count.round})"
ord :d5
end
|
get_counts2, get_counts2_u¶
get_counts2 calcola le distribuzioni di frequenza con le percentuali sui casi validi e le percentuali sul totale di una variabile. Restituisce un vettore con un elemento per ciascun valore della variabile costituito a sua volta da un vettore di cinque elementi: valore, etichetta valore, conteggio frequenze, percentuale validi, percentuale totale.
Argomenti:
- :miss => true|false: aggiunge il conteggio dei valori mancanti (default true)
1 2 | get_counts2(:area, :ndec => 2)
# [[1, "Nord Ovest", 93, 31.0, 30.49], [2, "Nord Est", 50, 16.67, 16.39], [3, "Centro", 70, 23.33, 22.95], [4, "Sud", 87, 29.0, 28.52], [nil, nil, 5, nil, 1.64]]
|
get_freqs, get_freqs_u¶
get_freqs(varname [, values]) restituisce un hash con le coppie valore/conteggio. E’ possibile indicare come secondo argomento l’elenco dei valori da considerare.
Argomenti:
- :miss => true|false: aggiunge il conteggio dei valori mancanti (default false o true se values include nil)
1 2 3 4 | get_freqs(:area) # {1=>93, 2=>50, 3=>70, 4=>87}
get_freqs(:area, [2,3]) # {2=>50, 3=>70}
get_freqs(:area, 3) # {3=>70}
get_freqs(:area, [2,nil]) # {2=>50, nil=>5}
|
get_pcts, get_pcts_u¶
get_pcts(varname) restituisce un hash con le coppie valore/percentuale. E’ possibile indicare come secondo argomento l’elenco dei valori da considerare (le percentuali verranno comunque calcolate sul totale di tutti valori).
Argomenti:
- :miss => true|false: aggiunge il conteggio dei valori mancanti (default false o true se values include nil).
In caso di inclusione dei valori mancanti, le percentuali verranno calcolate sul totale casi e non sui casi validi.
1 2 3 4 | get_pcts(:area, :ndec => 2) # {1=>31.0, 2=>16.67, 3=>23.33, 4=>29.0}
get_pcts(:area, 3..4) # {3=>23.333333333333332, 4=>29.0}
get_pcts(:area, 4) # {4=>29.0}
get_pcts(:area, [4,nil]) # {4=>28.524590163934427, nil=>1.639344262295082}
|
get_val, get_val_u¶
get_val(varname, value) restituisce la numerosìtà del valore di una variabile. Indicando una lista di valori si ottiene la somma dei valori.
1 2 3 4 5 | get_val(:area, 2) # 50
get_val(:area, 4) # 87
get_val(:area, [2,4]) # 137
get_val(:area, 22) # 0
get_val(:d5, nil) # 30
|
get_val_pct, get_val_pct_u¶
get_val_pct(varname, value) restituisce la percentuale del valore di una variabile.
Indicando una lista di valori si ottiene la somma delle percentuali dei valori.
In caso di inclusione dei valori mancanti, le percentuali verranno calcolate sul totale casi e non sui casi validi.
1 2 3 4 5 6 | get_val_pct(:area, 2) # 16.666666666666668
get_val_pct(:area, 4, :ndec => 2) # 29.0
get_val_pct(:area, [2,4], :ndec => 2) # 45.67
get_val_pct(:area, 22) # 0
get_val_pct(:area, [2,nil]) # 18.0327868852459
get_val_pct(:area, nil) # 1.639344262295082
|
get_mean, get_std, get_serr, get_sum¶
get_<stat>(varname) restituisce il valore ponderato della statistica di una variabile.
get_mean_u, get_std_u, get_serr_u, get_sum_u¶
get_<stat>_u(varname) restituisce il valore non ponderato della statistica di una variabile.
get_min, get_max¶
get_min(varname) restituisce il valore minimo di una variabile.
get_max(varname) restituisce il valore massimo di una variabile.
get_nval¶
get_nval(varname) restituisce il numero di valori presenti in una variabile.
Altre funzioni¶
get_last_id¶
get_last_id restituisce l’id dell’ultima tabella generata.
allstats¶
allstats restituisce l’elenco delle statistiche disponibili.
Data e ora¶
L’oggetto time contiene la data e l’ora corrente. E’ possibile estrarre alcuni dati applicando vari metodi:
Metodo | Restituisce |
---|---|
today(format) | stringa con la data; formato di default: %Y%m%d |
now(format) | stringa con la data e l’ora; formato di default: %Y%m%d%H%M%S |
year | anno |
month | numero del mese |
day | numero del giorno del mese |
wday | numero del giorno della setitmana |
yday | numero del giorno dell’anno |
day(abbr) | nome del giorno della settimana in inglese |
giorno(abbr) | nome del giorno della settimana in italiano |
month(abbr) | nome del mese in inglese |
mese(abbr) | nome del mese in italiano |
days(abbr) | vettore con il nome dei giorni della settimana in inglese |
giorni(abbr) | vettore con il nome dei giorni della settimana in italiano |
months(abbr) | vettore con il nome dei mesi in inglese |
mesi(abbr) | vettore con il nome dei mesi in italiano |
freeze! | blocca la data e l’ora anche per le successive richieste all’oggetto time |
Per i metodi che restituiscono le stringhe dei giorni e dei mesi, le versioni con il punto esclamativo finale restituiscono le stringhe in maiuscolo. Il pagametro abbr indica il numero di caratteri a cui abbreviare le stringhe.
E’ inoltre possibile generare un nuovo oggetto time con una data (e ora) di propria scelta: time(datatime).
1 2 3 4 5 6 7 8 9 | # se è il 31/12/2018 alle ore 23:59:59
spss.save "results_#{time.year}" # => results_2018
spss.save "results_" + time.today # => results_20181231
spss.save "results_" + time.now # => results_20181231235959
# genero data_produz con una data specifica
data_produz = time("13/06/2019")
spss.open "data_#{data_produz.year}_#{data_produz.smonth(3)}" # => data_2019_Jun
spss.open "data" + data_produz.year.to_s + data_produz.smese!(3) # => data2019GIU
|
Funzioni per i titoli delle tabelle¶
\n¶
\n in un titolo genera un a capo.
$vl()¶
$vl(varname) inserisce nel titolo della tabella l’etichetta della variabile. L’argomento varname è facoltativo, se omesso viene considerata la prima variabile della tabella. Altrimenti si può utilizzare qualsiasi nome di variabile esistente nel file di dati, anche se non fa parte della tabella. Il nome deve essere inserito senza virgolette. Le parentesi vanno comunque inserite.
Le varianti $VL(), $Vl() mettono l’etichetta rispettivamente in maiuscolo e con la prima lettera maiuscola.
1 2 3 | cat :d12_1, "Esprima un giuduzio relativamente ai seguenti personaggi;\n$vl()"
ord [:aggr12_1, :d12_1], "Esprima un giuduzio relativamente ai seguenti personaggi;\n$VL(d12_1)"
|
template¶
I file .yml delle etichette (vedi Internazionalizzazione) contengono i seguenti template:
- title_template: il template per il titolo delle tabelle
- autotab_title_template: il template per il titolo delle tabella generate da autotab
- autotab_title_template_syntax: il template per il titolo delle tabella nella sintassi da autotab
Nei template è possibile inserire del testo e utilizzare i seguenti segnaposti:
- %{n}: il numero della tabella
- %{v}: il nome della variabile
- %{t}: il titolo della tabella (generato da pTabs o inserito esplicitamente)
- %{l}: l’etichetta della variabile (solo per title_template)
E’ possibile inoltre aggiungere ai segnaposti dei suffissi per formattare le stringhe:
- f: (capitalize first) la prima lettera maiuscola, il resto invariato
- c: (capitalize) la prima lettera maiuscola, il resto minuscolo
- t: (titleize) tutte le iniziali maiuscole, il resto minuscolo
- u: (upcase) tutto maiuscolo
- d: (downcase) tutto minuscolo
Solo per nome variabile:
- .: (dot) sostituisce il punto all’underscore
File language\xx.yml:
xx:
labels:
title_template: "%{t}"
autotab_title_template: "Tabella %{n} - [%{v}] %{tf}"
autotab_title_template_syntax: "%{vu.}. %{tf}"
Nella sintassi è disponibile anche l’istruzione title_template:
1 | title_template "Tab.%{n} [%{v}]\n%{t}"
|