2017-07-29 73 views
3

在R 3.4.0中,如何将prop.table()生成的所有百分比四舍五入到一行中的三位小数位?如何在R中将prop.table的所有值四舍五入?

这不起作用:

MyTable$MyCol %>% table() %>% prop.table()*100 %>% round(.,3) 

     -7   -2   0   1   2   3   4   5 
0.4672897 0.2336449 31.7757009 1.6355140 44.3925234 20.3271028 0.4672897 0.7009346 

预期的是这样的:

-7  -2 0  1  2  3  4  5 
0.467 0.233 31.775 1.635 44.392 20.327 0.467 0.700 
+0

您能举一个小例子吗 – akrun

+0

列表:-7 -2 0 1 2 3 4 5值:0.4672897 0.2336449 31.7757009 1.6355140 44.3925234 20.3271028 0.4672897 0.7009346 – Javide

+0

请在您的文章中更新。我尝试了一个例子,但在prop.table之后,我得到一个舍入数字,因为它乘以100 – akrun

回答

2

你需要乘分离成单独的操作:

mtcars$cyl %>% table() %>% prop.table() %>% `*`(100) %>% round(2) 
1

初始化数据

a <- c(0.4, 0.2336449, 31.7757009, 1.6355140, 44.3925234, 20.3271028, 0.4672897, 0.7) 

第一种方式

format(round(a, 3), nsmall = 3) 
# [1] " 0.400" " 0.234" "31.776" " 1.636" "44.393" "20.327" " 0.467" " 0.700" 

方式二

options(digits=3) 
a 
# [1] 0.400 0.234 31.776 1.636 44.393 20.327 0.467 0.700 
2

我们还可以切换到下一个%>%

mtcars$cyl %>% 
    table() %>% 
    prop.table() %>% {. * 100} %>% 
    round(2) 
. 
#  4  6  8 
# 34.38 21.88 43.75 
之前使用 {}评估( ...)作为 %>% ... %>%内的全