Knitr kable/pandoc/pander/geom_title/grid.table пользовательское форматирование ячеек

Я хотел бы добавить символы и буквы до и после некоторых чисел при использовании функции kable knitr, но не знаю, как это сделать эффективно. Однако я также готов рассмотреть pandoc/pander, если это лучше/эффективнее.

Конечным результатом должна быть HTML-таблица... или очень хорошая ее графика....

См. следующий код в качестве фиктивного воспроизводимого примера в файле .Rmd:

### Notional and Cumulative P&L

```{r echo=FALSE}
Notional <- 10000
yday_pnl <- -2942
wtd_pnl <- 2300
mtd_pnl <- -3334
ytd_pnl <- 5024

yday_rtn <- (yday_pnl/Notional)*10000
wtd_rtn <- (wtd_pnl/Notional)*10000
mtd_rtn <- (mtd_pnl/Notional)*10000
ytd_rtn <- (ytd_pnl/Notional)*10000

Value <- c(Notional,yday_pnl,wtd_pnl,mtd_pnl,ytd_pnl)
rtn <- c(NA,yday_rtn,wtd_rtn,mtd_rtn,ytd_rtn)

COB.basics <- as.data.frame(cbind(Value,rtn))
rownames(COB.basics) <- c('Notional','yday pnl','wtd_pnl','mtd_pnl','ytd_pnl')
```

```{r results='asis',echo=FALSE}
kable(COB.basics,digits=2)
```

Так похоже на тип формата валюты или бухгалтерского учета в Excel. Я хотел бы, чтобы поле значения имело знак $ для столбца Value, а для столбца rtn я хотел бы иметь строку bps после чисел... также для удобства чтения могут ли быть запятые после трех цифр, если они стоят до десятичной точки? то есть представлять тысячи и т. д.

И можно ли раскрашивать клетки? а также раскрасить текст/цифры? то есть красный для отрицательных значений?


person h.l.m    schedule 18.07.2014    source источник


Ответы (1)


Частичное решение с pander:

  1. Установите "большую метку" для pander, чтобы она использовалась для всех чисел:

    panderOptions('big.mark', ',')
    
  2. Вы также можете установить синтаксис таблицы на rmarkdown (необязательно, так как теперь rmarkdoen v2 также использует Pandoc, где формат multiline имеет некоторые интересные функции по сравнению с форматом rmarkdown, который предлагался ранее:

    panderOptions('table.style', 'rmarkdown')
    
  3. Вы можете выделить некоторые ячейки, например. which и некоторое пользовательское выражение R:

    emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
    
  4. Просто позвоните pander на свой data.frame:

    > library(pander)
    > emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
    > panderOptions('big.mark', ',')
    > pander(COB.basics)
    
    -----------------------------------
        &nbsp;       Value       rtn   
    -------------- ---------- ---------
     **Notional**  **10,000**    NA    
    
     **yday pnl**    -2,942    -2,942  
    
     **wtd_pnl**   **2,300**  **2,300**
    
     **mtd_pnl**     -3,334    -3,334  
    
     **ytd_pnl**   **5,024**  **5,024**
    -----------------------------------
    
    > panderOptions('table.style', 'rmarkdown')
    > pander(COB.basics)
    |     &nbsp;     |  Value  |  rtn   |
    |:--------------:|:-------:|:------:|
    |  **Notional**  | 10,000  |   NA   |
    |  **yday pnl**  | -2,942  | -2,942 |
    |  **wtd_pnl**   |  2,300  | 2,300  |
    |  **mtd_pnl**   | -3,334  | -3,334 |
    |  **ytd_pnl**   |  5,024  | 5,024  |
    

Чтобы раскрасить ячейки, вы можете добавить некоторую пользовательскую разметку HTML/CSS вручную (или LaTeX, если вы работаете с pdf в долгосрочной перспективе), и то же самое относится и к добавлению % или других символов/строк в ваши ячейки, например. paste и apply -- но, пожалуйста, не стесняйтесь отправлять запрос на функцию по адресу https://github.com/Rapporer/pander< /а>

person daroczig    schedule 18.07.2014
comment
Я не очень хорошо знаком с пандером ... как его поместить в файл уценки R? - person h.l.m; 18.07.2014
comment
@h.l.m вызывает pander вместо kable и, возможно, также устанавливает стиль таблицы на rmarkdown (см. обновленный пример) - хотя формат multiline по умолчанию отлично подходит для Pandoc. - person daroczig; 18.07.2014
comment
Будет ли файл проходить через функцию yarn2html()? - person h.l.m; 18.07.2014