问候:我是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)
Run Code Online (Sandbox Code Playgroud)
现在,我可以执行所需的摘要:
SummaryTable <- melt.dat %>%
group_by(variable) %>%
summarise_each(funs(sum, sum/n()))
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
variable sum *
1 a 50 50.50505
2 b 58 58.58586
3 c 46 46.46465
4 d 46 46.46465
Run Code Online (Sandbox Code Playgroud)
我的理想输出如下.我无法弄清楚如何在summarise_each或melt函数中指定我的列名,设置小数位并抑制行号.我已经花了很长时间才能做到这一点,似乎无法让其他人知道!
Letter Count Percent
a 50 50.5
b 58 58.6
c 46 46.5
d 46 46.5
Run Code Online (Sandbox Code Playgroud)
不确定在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5261 次 |
| 最近记录: |