Espressioni

Diverse funzioni in pTabs (filter, select, rake, value_if, compute, ecc.) richiedono o consentono l’utilizzo di espressioni sulle variabili del data frame.
E’ possibile specificare le espressioni in tre modi diversi:

  • il semplice nome della variabile o nome preceduto da ! per indicare i casi validi o non validi sulla variabile

  • un hash (dizionario) con le coppie variabile-valori. Più coppie variabile-valori sono unite in AND nell’espressione

  • una stringa con un’espressione composta da:

    • Operatori aritmetici: +, -, *, /, %
    • Operatori di confronto: <, >, <=, >=, <>, !=, =
    • Operatori logici: AND, OR, NOT
    • Selezione: CASE, IF
    • Tutte le funzioni del modulo Math di Ruby, come SIN, COS, TAN, ecc.
    • Le seguenti funzioni:

    Funzione

    Argomenti

    Valore restituito

    Descrizione

    MAX

    array

    number

    valore massimo

    MIN

    array

    number

    valore minimo

    ROUND

    number, ndec

    number

    arrotonda

    ROUNDDOWN

    number, ndec

    number

    arrotonda al numero inferiore

    ROUNDUP

    number, ndec

    number

    arrotonda al numero superiore

    SUM

    array

    number

    somma valori

    MEAN

    array

    number

    media valori

    DIFF

    val1, val2

    number

    differenza due valori

    TRUNC

    number

    number

    tronca i decimali

    FLOAT

    number

    number

    converte il numero in float

    INT

    number

    number

    converte il numero in intero

    BETWEEN

    value, min, max

    boolean

    testa se il valore è tra minimo e massimo

    TEXT

    value

    string

    converte il numero in stringa

    FIRST

    array

     

    il primo elemento valido dell’array

    LAST

    array

     

    l’ultimo elemento valido dell’array

    ANY

    value, array

    boolean

    testa se almeno un elemento della lista è uguale al valore

    IFANY

    value, yes, no, array

     

    testa se almeno un elemento della lista è uguale al valore e restituisce yes o no

    ALL

    value, array

    boolean

    testa se tutti gli elementi della lista sono uguali al valore

    IFALL

    value, yes, no, array

     

    testa se tutti gli elementi della lista sono uguali al valore e restituisce yes o no

    NONE

    value, array

    boolean

    testa se nesuno degli elementi della lista sono uguali al valore

    IFNONE

    value, yes, no, array

     

    testa se nesuno degli elementi della lista sono uguali al valore e restituisce yes o no

    VALID

    array

    boolean

    testa se almeno un elemento è un valore valido

    NVALID

    array

    number

    restituisce il numero di elementi validi

    COUNT

    value, array

    number

    conta gli elementi uguali a valore

    MCOUNT

    ‘[val1,val2,...]’, array

    number

    conta gli elementi uguali a uno dei valori

    NUMBER

    string

    number

    converte la stringa in numero

    CONCAT

    array

    string

    concatena le stringhe

    DATE

    string

    data

    converte la stringa in data

    DATETIME

    string

    datetime

    converte la stringa in datetime

    STRIP

    string

    string

    elimina gli spazi iniziali e finali dalla stringa

    EMPTY

    string

    boolean

    testa se la stringa è vuota

    FILLED

    string

    boolean

    testa se la stringa è piena

    CAPITALIZE

    string

    string

    converte il primo carattere della stringa in maiuscolo

    TITLEIZE

    string

    string

    converte il primo carattere di ogni parola in maiuscolo

    UPCASE

    string

    string

    converte la stringa in maiuscolo

    DOWNCASE

    string

    string

    converte la stringa in minuscolo

    SCOUNT

    string, text

    number

    conta le occorrenze di text in string

    SPLIT

    string, sep, ntoken

    string

    divide la stringa in base a sep

    LEFT

    string, number

    string

    restituisce i primi number caratteri

    RIGHT

    string, number

    string

    restituisce gli ultimi number caratteri

    MID

    string, start, len

    string

    restituisce la sottostringa lunga len che parte dalla posizione start

    LEN

    string

    number

    string

    SUBSTITUTE

    string, search, repl

    string

    sostituisce search con repl

    N

     

    number

    il numero totale di record

    NROW

     

    number

    il numero progressivo del record (base 1)

    LABEL

    varname

    string

    l’etichetta della variabile

    LEVEL

    varname, code

    string

    l’etichetta del livello della variabile

Esempi con sintassi alternative:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 # valori validi
 :x1
 "x1"
 "VALID(x1)"

 # valori mancanti
 :x1 => nil
 "!x1"
 "NOT(VALID(x1))"

 # uguale a un valore
 {:sesso => 1}
 "sesso=1"

 # minore di un valore
 "etanum<=25"

 # due condizioni diverse in AND
 "#sesso=1 AND etanum<25"

 # più valori di una stessa variabile(in OR)
 :region => [1,3,7]
 "ANY(region,1,3,7)"

 # range
 :etanum => 18..24

 # estrae il mese da una stringa e lo strasforma in intero
 compute :mese => "INT(MID(giorno,6,2))"

Le funzioni possono essere scritte indifferentemente in maiuscolo o minuscolo.

add_function

add_function permette di definire delle nuove funzioni all’interno dello script:

1
2
3
4
5
6
7
 add_function(name, type, body)

 add_function(:myfunction, :string, ->(text) {
   text.gsub(/(.+?) anni/, 'Age \1')
 })

 compute :x4 => "MYFUNCTION(level(eta))"