martedì 3 maggio 2022

Come riportare i numeri in formato fisso

Se nel confronto tra due numeri sono interessato soprattutto al loro ordine di grandezza la notazione scientifica [1] va benissimo. Ma per un confronto puntuale preferisco il formato fisso.

Così, giusto per fare un esempio, quando devo confrontare due valori di probabilità p anziché p=8.327701e-03 e p=6.412771e-02 preferisco leggere p=0.008327701  p=0.06412771.

Copiate lo script che segue, incollatelo nella Console di R e premete ↵ Invio:

# RIPORTARE I NUMERI IN FORMATO FISSO o nella notazione scientifica
#
col_1 <- c(0.00003230609, 0.01850436, 0.008327701) # prima colonna
col_2 <- c(0.6991678, 0.00005211903, 0.02457609) # seconda colonna
mydataframe <- data.frame(col_1, col_2) # combina le due colonne in una tabella
#
mydataframe # mostra la tabella
#
options(scipen=999) # esprime i numeri in formato fisso
mydataframe # mostra la tabella
#
options(scipen=0) # ripristina la notazione scientifica
mydataframe # mostra la tabella
#

Come si vede a fronte dell'inserimento in una tabella di numeri espressi in formato fisso (0.00003230609, 0.01850436, 0.008327701, 0.6991678, 0.00005211903, 0.02457609) di default R riporta i numeri in notazione scientifica

> mydataframe # mostra la tabella
         col_1        col_2
1 3.230609e-05 6.991678e-01
2 1.850436e-02 5.211903e-05
3 8.327701e-03 2.457609e-02

ma consente di passare all'espressione dei numeri in formato fisso impiegando all'interno della funzione options() [2] l'argomento scipen=999 

> options(scipen=999) # esprime i numeri in formato fisso
> mydataframe # mostra la tabella
          col_1         col_2
1 0.00003230609 0.69916780000
2 0.01850436000 0.00005211903
3 0.00832770100 0.02457609000

e di ripristinare l'espressione dei numeri in notazione scientifica impiegando all'interno della funzione options() l'argomento scipen=0 

> options(scipen=0) # ripristina la notazione scientifica
> mydataframe # mostra la tabella
         col_1        col_2
1 3.230609e-05 6.991678e-01
2 1.850436e-02 5.211903e-05
3 8.327701e-03 2.457609e-02

Nota bene: in Windows nella cartella C:\Programmi\R\R-n.n.n\etc (dove n.n.n sono i numeri della versione di R installata) si trova il file Rprofile.site [3] che viene eseguito automaticamente quando si lancia RNel file Rprofile.site possono essere salvate le options() che si desidera siano impiegate da R di default. Il file può essere elaborato con un comune editor di testo.

Se volete che i numeri siano di default rappresentati in formato fisso, inserite nel file Rprofile.site la riga

options(scipen=999) 

Ovviamente potete, in alternativa, utilizzare all'interno dei vostri script options(scipen=999) ogniqualvolta preferite il formato fisso (soluzione consigliata), ripristinando poi la notazione scientifica con options(scipen=0).

Infine due indicazioni per completare il tema:
 il razionale per decidere quale deve essere il numero di cifre significative da impiegare nella rappresentazione di un numero è riportato nel post Come stabilire il giusto numero di cifre significative
 per esprimere in pratica i risultati di una elaborazione statistica, che sono generalmente ottenuti con un numero di cifre in eccesso rispetto a quelle significative, vedere il post Come arrotondare i numeri.


----------

[1] La notazione scientifica è una notazione esponenziale, cioè una notazione che consente di scrivere un numero N assegnato come prodotto di un opportuno numero a per la potenza di un altro numero bk essendo b la base della notazione esponenziale. In particolare la notazione scientifica è una notazione esponenziale in base 10 (b = 10). Tuttavia "notazione esponenziale" non è sinonimo di "notazione scientificain quanto esistono notazioni esponenziali che impiegano una base diversa da quella impiegata dalla notazione scientifica: ne sono un esempio la notazione esponenziale in base 2 (b = 2impiegata in informatica, e la notazione esponenziale in base e (b = e) - essendo il numero di Nepero e 2.718 281 828 459... - impiegata in campo matematico e in campo scientifico.
[Precisazione aggiuntiva: in R il separatore delle cifre decimali è il punto (.) e come già riportato altrove questa convenzione per ragioni di omogeneità viene adottata non solo negli script ma anche nei file di dati e in tutto il testo di questo sito, quindi anche nell'espressione del numero e di Nepero. Per le norme che regolano la punteggiatura all'interno dei numeri rimando al post Come separare i decimali e come raggruppare le cifre].

[2] Digitate help(options) nella Console di R per scoprire gli altri argomenti della funzione options()

[3] Se avete installato la versione a 32 bit di R in Windows trovate il file Rprofile.site nella cartella C:\Programmi(x86)\R\R-n.n.n\etc (dove n.n.n sono sempre i numeri della versione di R installata).

Nessun commento:

Posta un commento