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¶
exist?¶
Controlla se le variabili esistono nel dataframe corrente e restituisce true se tutte le variabili esistono e false se almeno una variabile non esiste.
1 2 3 | cat :v10045 if exist?(:v10045)
ord [:eta, etaq] if exist?(:eta, :etaq)
md s(:v100,10) if exist?(s(:v100,10))
|
existing¶
Controlla se le variabili esistono nel dataframe corrente e restituisce l’elenco (Array) delle solo variabili esistenti.
1 2 | cat existing(:v1,:v2,:v3)
md existing(s(:d7_,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.
stringvars¶
stringvars restituiscel’elenco delle variabili di testo 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
|
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,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 | p get_codes(:d6_5) # => [1, 2, 3, 4]
p get_values(:d6_5) # => [0, 1, 2, 3]
p 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.
Dati¶
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.
columns¶
columns(varlist) restituisce una matrice con i dati delle variabili.
get_base¶
get_base(varname, value) restituisce il numero di casi pesati di una variabile o di un suo livello (se specificato value).
Se non si specifica varname verà restituito il numero totale di casi pesati del dataframe.
1 2 3 4 5 6 | base_d5 = get_base(:d5)
if base_d5 > 100
ord :d5
end
ord :d1 if get_base(:d1, 2) > 30
|
get_base_u¶
get_base_u(varname, value) restituisce il numero di casi non pesati di una variabile o di un suo livello (se specificato value).
Se non si specifica varname verà restituito il numero totale di casi non pesati del dataframe.
get_counts¶
get_counts(varname [, :drop]) restituisce i livelli di una variabile con le distribuzioni di frequenza ponderate (se è attiva una variabile di ponderazione). Il parametro :drop elimina i livelli con frequenze pari a zero. get_counts restituisce un vettore con un elemento per ciascun livello della variabile costituito a sua volta da un vettore di tre elementi: codice livello, etichetta livello, conteggio frequenze:
p get_counts(:sesso)
[[1, "Maschio", 154.0], [2, "Femmina", 146.0]]
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_counts_u¶
get_counts(varname [, :drop]) funziona in modo analogo a get_counts, ma restituisce sempre le distribuzioni di frequenza non ponderate.
get_val¶
get_val(varname, value) restituisce la numerosìtà ponderata del codice di una variabile.
get_val_u¶
get_val(varname) restituisce la numerosìtà non ponderata del codice di una variabile.
get_last_id¶
get_last_id restituisce l’id dell’ultima tabella generata.
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.
empty_vars¶
empty_vars(varlist) restituisce l’elenco delle variabili vuote.
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.
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
File language\xx.yml:
xx:
labels:
title_template: "%{t}"
autotab_title_template: "Tabella %{n} - [%{v}] %{tf}"
autotab_title_template_syntax: "%{tf}"
Nella sintassi è disponibile anche l’istruzione title_template:
1 | title_template "Tab.%{n} [%{v}]\n%{t}"
|