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
 exist! :eta, :area, s(:d7_,1..10)

existing

Controlla se le variabili indicate sono presenti nel dataset corrente e restituisce l’elenco (Array) delle solo variabili esistenti.

1
2
 cat existing(:v1,:v2,:v3)
 md existing(s(:d7_,99))

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

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 dataset.

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 dataset.

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 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.

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