Маркировка с процентом в R сюжете - PullRequest
4 голосов
/ 18 июня 2010

Привет, я сделал эту функцию, которая берет таблицу и готовит этикетку для барплота

prepare_labels <- function(ft){
  labs <- ft
  labs <- paste(labs, "\n", sep="")
  labs <- paste(labs, round(prop.table(ft)*100,2), sep="")
  labs <- paste(labs, "%", sep="")
  return(labs)
}

На самом деле все работает нормально, но есть ли лучший способ написать эту функцию, приведенный выше код выглядит ужасно, и я хочу написать красивый код: -)

например:

ft <- table(mydata$phone_partner_products)
prepare_labels(ft)
[1] "3752\n34.09%" "226\n2.05%"   "2907\n26.41%" "1404\n12.76%" "1653\n15.02%"
[6] "1065\n9.68%" 

Ответы [ 3 ]

5 голосов
/ 19 июня 2010

Или, используя ggplot2:

ggplot(mtcars, aes(factor(cyl))) + geom_bar() + stat_bin(aes(label = paste(prop.table(..count..) * 100, "%", sep = "")), vjust = -0.2, geom = "text", position = "identity")

и получите что-то вроде этого:

альтернативный текст http://img532.imageshack.us/img532/8201/barplotwpct.png

5 голосов
/ 18 июня 2010

Поскольку аргумент sep одинаков для всех вызовов вставки, вы можете объединить в один:

labs <- paste(ft,"\n",round(prop.table(ft)*100,2),"%",sep="")
2 голосов
/ 18 июня 2010

Использование sprintf:

sprintf("%d\n%2.2f%%", ft, prop.table(ft)*100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...