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 algumas delas:
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 entre os intervalos depois do 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:
> 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:
> x lt; - colMeans (mtcars [, 1: 4])> formato (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. Esta embalagem 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:
> x lt; - SEQ (0,5, 0,55, 0,01)> 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. Assim, neste caso, % .1f significa para formatar o primeiro valor fornecido como um pointvalue fixado com um dígito depois do 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:
> Set.seed (1)> X lt; - 1000 * runif (5)> sprintf ( "% $ 3.2f", x) [1] "265,51 $" "$ 372,12" "572,85 $" "$ 908,21" "$ 201,68"
Como você viu anteriormente, o literal % 3.2f significa para formatar o valor como um valor de ponto fixo com três dígitos antes do decimal e dois dígitos depois da vírgula.
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:
> material lt; - c ( "pão", "cookies")> preço lt; - c (2,1, 4)> sprintf ( "% s custou $% 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 (), o resultado é um vetor com dois elementos. ciclos R através dos elementos e coloca-los na sprintf () literais. Assim, % s (Indicando o formato do valor como uma string) obtém o valor "pão" a primeira vez e "biscoitos" a segunda vez.
Você pode fazer tudo com colar() e formato() que você pode fazer com sprintf ().