Pergunta

Estou emitindo um DataFrame para HTML via xtable. Quero adicionar vírgulas aos números em algumas colunas da tabela. Imaginei que antes de fazer meu próprio hack de pasta, verificaria se há uma maneira de fazer isso para fazer isso.

Foi útil?

Solução

Você pode considerar transformar a coluna usando formatC

> formatC(1:10 * 100000, format="d", big.mark=",")
 [1] "100,000"   "200,000"   "300,000"   "400,000"   "500,000"   "600,000"  
 [7] "700,000"   "800,000"   "900,000"   "1,000,000"

Outras dicas

Muito obrigado a Jonathan Chang por sua resposta. formatC parece ser uma função extremamente útil. Isso me inspirou a ler a documentação para ele, em que encontrei prettyNum, que acabou sendo uma solução bastante elegante para um problema semelhante que eu estava tendo. Aqui está um exemplo mínimo viável do que eu fiz para adicionar vírgulas aos números em um quadro de dados nomeado enrollment.summary.

xtable(prettyNum(enrollment.summary,big.mark=","))

Você também pode tentar usar o argumento de combinação 'formato.args'

  ## Demonstration of additional formatC() arguments.
  print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ","))

daqui

https://cran.rstudio.com/web/packages/xtable/xtable.pdf

Aqui está uma resposta tardia, mas você também pode usar scales::comma_format do seguinte modo:

library(scales)
values <- c(1000000.789, 8888.23)
comma_format(digits = 12)(values)
## [1] "1,000,000.789" "8,888.230"

Para apenas valores inteiros, você pode apenas usar vírgula:

int_vals <- c(1234, 5678)
comma(int_vals)
## [1] "1,234" "5,678"

para formatar alguns resumos de dplyr, aqui está o código do Boilerplate:

df %>%
    summarise(mu=mean(big_values),
              min=min(big_values),
              max=max(big_values)) %>%
    mutate_each(funs(prettyNum(., big.mark=",")))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top