Добавление знака% в выводе файла prop.table - PullRequest
6 голосов
/ 08 февраля 2012

Я пытаюсь добавить знак% в вывод prop.table для использования в Sweave.Мой попытанный код ниже:

m <- matrix(1:4,2)
dimnames(m) <- list(c("A", "B"), c("C", "D"))
prop.table(m,1)*100

         C        D
A 25.00000 75.00000
B 33.33333 66.66667


paste(round(prop.table(m,1)*100, 3), "%", sep = "")
[1] "25%"     "33.333%" "75%"     "66.667%"


paste(sprintf("%.1f", prop.table(m,1)*100), "%", sep = "")
[1] "25.0%" "33.3%" "75.0%" "66.7%"

Использование paste изменит класс с матрицы на символ.Я был бы очень признателен, если бы кто-нибудь указал мне правильное решение.Спасибо

Ответы [ 3 ]

8 голосов
/ 08 февраля 2012

Другим решением может быть замена содержимого матрицы:

m2 <- m
m2[] <- sprintf("%.1f%%",round(prop.table(m,1)*100, 3))
m2
#   C       D      
# A "25.0%" "75.0%"
# B "33.3%" "66.7%"
5 голосов
/ 08 февраля 2012

Большинство функций, предназначенных для работы с векторами, также принимают матрицы, но возвращают вектор вместо матрицы: paste, sprintf и т. Д. Вы можете использовать apply, который вернет матрицу.

apply( 
  prop.table(m,1)*100, 
  2, 
  function(u) sprintf( "%.1f%%", u ) 
)
1 голос
/ 27 июня 2018

Существует пакет под названием janitor, который решает проблему prop.table() «формат в процентах».Вот ссылка на пакет: https://github.com/sfirke/janitor

Вот пример использования со страницы github.

roster %>%
  tabyl(employee_status, full_time) %>%
  adorn_totals("row") %>%
  adorn_percentages("row") %>%
  adorn_pct_formatting() %>%
  adorn_ns() %>%
  adorn_title("combined")
#>  employee_status/full_time         No        Yes
#>             Administration   0.0% (0) 100.0% (1)
#>                      Coach 100.0% (2)   0.0% (0)
#>                    Teacher  33.3% (3)  66.7% (6)
#>                      Total  41.7% (5)  58.3% (7)
...