Como formatar números em r

Quando você produz relatórios em R, você quer que seus números apareçam tudo bem formatado para aumentar o impacto de seus dados sobre o espectador. Você pode usar formato() para transformar seus números no texto bonito, pronto para impressão. Esta função tem uma série de argumentos para controlar o formato do seu resultado. Aqui estão alguns:

  • aparar: Um valor lógico. E se FALSO, ele adiciona espaços para a direita; justificar o resultado. E se VERDADE, ele suprime os espaços à esquerda.

  • dígitos: Quantos dígitos significativos de valores numéricos para mostrar.

  • nsmall: O número mínimo de dígitos depois do ponto decimal.

Além disso, você pode controlar o formato do ponto decimal com decimal.mark, a marca entre os intervalos antes do ponto decimal com big.mark, , bem como a marca de entre os intervalos após o ponto decimal com small.mark.

Por exemplo, você pode imprimir o número 12345.6789 com uma vírgula como ponto decimal, espaços como a grande marca, e pontos como a pequena marca:

gt; formato (12345.6789, dígitos = 9, decimal.mark =",", + = Big.mark" ", Small.mark =".",, Small.interval = 3) [1] "12 345,678.9"

Como um exemplo mais prático, para calcular o meio de algumas colunas mtcars e, em seguida, imprimir os resultados com dois dígitos depois do ponto decimal, use o seguinte:

gt; X lt; - colMeans (mtcars [, 1: 4]) gt; formato de (x, dígitos = 2, nsmall = 2) disphp mpg cil" 20,09" " 6.19" "230,72" "146,69"

Observe que o resultado não é mais um número, mas uma cadeia de texto.

Se você estiver familiarizado com a programação em linguagens semelhantes ao C ou C ++, então você também pode encontrar o sprintf () função útil, porque sprintf () é um invólucro em torno do C printf () função. Este invólucro permite que você cole o seu número formatado diretamente em uma string.



Aqui está um exemplo de conversão de números em percentagens:

gt; X lt; - SEQ (0,5, 0,55, 0,01) gt; sprintf ("% .1f %%", 100 * x) [1] "50,0%" "51,0%" "52,0%" "53,0%" "54,0%" "55,0%"

Isto é o que ele faz: O primeiro argumento para sprintf () indica o formato - neste caso, “% .1f %%”. O argumento formato usa literais especiais que indicam que a função deve substituir este literal com uma variável e aplicar alguma formatação. Os literais sempre começam com o % símbolo. Então, neste caso, % .1f meios para formatar o primeiro valor fornecido como um pointvalue fixo com um dígito após o ponto decimal, e %% é um literal que significa imprimir uma %.

Para formatar alguns números como moeda - neste caso, o dólar americano - use o seguinte:

gt; set.seed (1) gt; X lt; - 1000 * runif (5) gt; sprintf ("$% 3.2f", X) [1] "$ 265,51" "$ 372,12" "$ 572,85" "$ 908,21" "$ 201,68"

Como você viu anteriormente, o literal % 3.2f meios para formatar o valor como um valor de ponto fixo com três dígitos antes da casa decimal e dois algarismos após a casa decimal.

o sprintf () função é muito mais poderoso do que isso: Dá-lhe uma forma alternativa de colar o valor de qualquer variável em uma string:

gt; coisa lt; - c ("pão", "biscoitos") Gt; preço lt; - c (2,1, 4) gt; sprintf ("% S $ orçamentados% 3.2f ", Material, preço) [1] "pão custou $ 2,10 " "biscoitos custou $ 4,00 "

O que acontece aqui é que, porque você forneceu dois vetores (cada um com dois elementos) para sprintf (), seu resultado é um vetor com dois elementos. ciclos R através dos elementos e coloca-los para o sprintf () literais. Portanto, % s (Indicando formato o valor como uma string) obtém o valor "pão" pela primeira vez e "biscoitos" a segunda vez.

Você pode fazer tudo com colar() e formato() que você pode fazer com sprintf ().


Publicações relacionadas