2015-05-29 2 views
3

Учитывая следующий пример:Keep конечные нули для процентов только

library(pander) 
tableAbs <- Titanic[1, 1, , ] 
tablePct <- round(prop.table(tableAbs) * 100, 2) 
table <- cbind(tableAbs, tablePct) 
pander(table) 

---------------------------------- 
    &nbsp;  No Yes No Yes 
----------- ---- ----- ----- ----- 
**Child** 0  5  0 2.78 

**Adult** 118 57 65.56 31.67 
---------------------------------- 

Я хотел бы, чтобы все конечные нули на этом 0 процент там, так это то, что я делаю:

panderOptions("keep.trailing.zeros", TRUE) 
pander(table) 

------------------------------------ 
    &nbsp;  No Yes No Yes 
----------- ------ ----- ----- ----- 
**Child** 0.00 5.00 0.00 2.78 

**Adult** 118.00 57.00 65.56 31.67 
------------------------------------ 

Проблема в том, что даже к абсолютным частотам прилагается .00. Так как это натуральные числа, не имеет смысла держать теми конечными нулями. Как мне это сделать?

+0

Я не опытный 'r' пользователь, но вы думаете, вы могли бы назвать' gsub' или что-то по элементам 'table'? Если это так, это кусок торта, используя простой [tag: regex]. – ShellFish

+2

Попробуйте 'tablePct <- format (round (prop.table (tableAbs) * 100, 2))' – user20650

+0

@ user20650, который работает, спасибо! Но почему? –

ответ

2

Благодаря rawr в комментариях.

Вы можете использовать format, чтобы сохранить конечные нули. Это преобразует округленные значения в character, сохраняя размеры таблицы.

tablePct <- format(round(prop.table(tableAbs) * 100, 2)) 

редактировать

Кажется, работает хорошо с xtabs класса

mtcars$am[mtcars$vs == 1] <- 0 
x <- xtabs(~ am + vs, data=mtcars) 
tab <- format(round(100*prop.table(x), 2)) 
tab <- cbind(x, tab) 
pander(tab) 

--------------------------- 
&nbsp; 0 1 0  1 
------- --- --- ----- ----- 
**0** 12 14 37.50 43.75 

**1** 6 0 18.75 0.00 
--------------------------- 
+0

Это делает это для данных макета. К сожалению, он не работает с моей реальной таблицей, которая относится к классу 'xtabs' (и' format' преобразует числа в символы). Я посмотрю, смогу ли я обойти это. –

+0

Waldir, не стесняйтесь редактировать свой вопрос с помощью примера xtabs – user20650

+1

Спасибо, но я понял. Взял немного мясника и стихинга, но он, наконец, выглядит красивым. –