Autotab

autotab produce automaticamente tutte le tabelle per un elenco di variabili o, se non specificato, per tutte le variabili del file di dati.

Suggerimento

Il parametro syntax permette di generare al posto delle tavole, la sintassi di pTabs2 necessaria per produrle. Le istruzioni stampate nell’output potranno essere copiate e incollate nello script ed eventualmente modificate per personalizzare il report.

Argomenti:

  • :keep => varlist: l’elenco delle variabili da tabulare
  • :drop => varlist: l’elenco delle variabili da escludere
  • :syntax => true|false: invece di produrre direttamente le tavole, genera la sintassi pTabs2 necessaria per produrle (default false)
  • :xlsx => "filename": genera un file xlsx con la sintassi necessaria per produrre le tavole. Vedi Scripting con file xlsx
  • :delimiter => "caratteri": i caratteri di separazione tra nome gruppo e progressivo item (default group_delimiter)
  • :max_items => #: massimo numero di item da tabulare (default autotab_max_items)
  • :skip => [:string, :dummy, :integer, :long_integer, :float, :datetime]: le variabili da non tabulare
  • :title => template|false: il template per il titolo (vedi Funzioni per i titoli delle tabelle); false disattiva il default e lascia semplicemente l’etichetta della variabile; (default Tabella %{n} - [%{v}] %{tf}, con syntax=>true %{tf})
  • :layout => :normal|:banner|:compact|:table: lo stile del report (default autotab_layout)
  • :by_val => :none|:sets|:all: nel caso di tabelle a totale determina in quali casi tabulare i valori della variabile in orizzontale: :none nessuno; :sets solo per i gruppi di variabili; :all per tutte le tabelle (default autotab_by_val)
  • :show_varnames => true|false: se mostrare o meno i nomi delle variabili della tabella nella nota (default false)
  • :cat => list: un array con le statistiche per le tabelle cat (default autotab_stat_cat)
  • :ord => list: un array con le statistiche per le tabelle ord (default autotab_stat_ord)
  • :scale => list: un array con le statistiche per le tabelle scale (default autotab_stat_scale)
  • :md => list: un array con le statistiche per le tabelle md (default autotab_stat_md)
  • :mc => list: un array con le statistiche per le tabelle mc (default autotab_statmct)

Per ulteriori opzioni di configurazione, si veda la sezione relativa ad autotab nei parametri di configurazione.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# genera solo una bozza di sintassi nel log, non produce il report delle tavole
autotab :syntax => true

autotab :syntax => true, :title => "Tabella %{v.}. %{tf}"

# non tabula le variabili indicate
autotab :drop => [:interview_start, :responseid]

# esclude le variabili in base al tipo
autotab :skip => [:string, :dummy, :integer, :long_integer, :float, :datetime]

Prima dell’istruzione autotab è possibile impostare un pannello:

1
2
panels.add :sex, :eta, :area
autotab

Per il corretto riconoscimento degli item di non risposta nelle tabelle multiple, è possibile modificare la seguente istruzione:

1
2
3
labels << {
  :autotab_no_labels => "non sa;non risponde;non ricorda;non indica;nessuno;nessuna"
}

I template dei titoli possono anche essere configurati in precedenza con:

1
2
3
4
labels << {
 :autotab_title_template => "TAB.%{n} - [%{v}] %{tf}",
 :autotab_title_template_syntax => "%{vu.}. %{tf}"
}

Attenzione

Se si genera la sintassi delle tabelle con autotab e poi si incollano le istruzioni generate nello script, commentare la precedente istruzione autotab in quanto autotab imposta delle particolari configurazioni che potrebbero non essere desiderate durante la reale tabulazione.

:syntax => true non produce necessariamente le istruzioni più sintetiche o dirette, ma cerca di generare istruzioni che possano essere adattate più facilmente alle diverse esigenze. Per esempio una batteria di items può generare queste istruzioni:

1
2
3
4
5
s(:d8_,1..7).each do |v|
  ord v, "$vl()" do
    w 0=>nil, 1=>1, 2=>2, 3=>3, 4=>4
  end
end

che utilizzate senza modifiche sono inutilmente prolisse.
Le stesse tabelle si podrebbe ottenere con le seguenti istruzioni più sintetiche e chiare:

1
2
3
xord s(:d8_,1..7) do
  w 0=>nil, 1=>1, 2=>2, 3=>3, 4=>4
end

La prima soluzione pemette però maggiori possibilità di intervento, per esempio:

1
2
3
4
5
6
s(:d8_,1..7).each_with_index do |v, i|
  na_if v, "d80!=#{i+1}"
  ord v, "TABELLA 8.#{i+1} - $vl()" do
    w 0=>nil, 1=>1, 2=>2, 3=>3, 4=>4
  end
end