首页 文章

使用dplyr格式化summarise_each中的输出

提问于
浏览
4

问候:我是dplyr的新手,并且在格式化输出时遇到了一些挑战 . 这是一个代码片段,它使用 melt 生成一些可重现的数据,使其成为我需要的形状 .

set.seed(1234)
library(reshape2)
library(dplyr)
val <- c(0:1)
a <- sample(val, 99, replace=T)
b <- sample(val, 99, replace=T)
c <- sample(val, 99, replace=T)
d <- sample(val, 99, replace=T)
dat <- data.frame(a,b,c,d)
melt.dat <- melt(dat)

现在,我可以执行所需的摘要:

SummaryTable <- melt.dat %>%
group_by(variable) %>%
summarise_each(funs(sum, sum/n()))

这是我的输出:

variable sum        *
1        a  50 50.50505
2        b  58 58.58586
3        c  46 46.46465
4        d  46 46.46465

我的理想输出如下 . 我无法弄清楚如何在 summarise_eachmelt 函数中指定我的列名,设置小数位并禁止行号 . 我似乎得到了其余的想法!

Letter Count Percent
        a    50    50.5
        b    58    58.6
        c    46    46.5
        d    46    46.5

1 回答

  • 5

    不确定在dplyr中是否可以抑制rownames(编号),但是这里你可以得到正确的名称和格式:

    options(digits = 3)
    
    melt.dat %>%
      group_by(Letter = variable) %>%
      summarise_each(funs(Count = sum(.), Percent = sum(.)/n()*100), -variable)
    
    #Source: local data frame [4 x 3]
    #
    #  Letter Count Percent
    #1      a    45    45.5
    #2      b    51    51.5
    #3      c    52    52.5
    #4      d    48    48.5
    

相关问题