2016-07-29 68 views
0

我的数据是这样的:排序dplyr的输出::总结

(sassign是保存数据的data.frame)

head(sassign %>% select(child,youth,cook,do_it)) 
    child youth cook do_it 
1  3  2 2  0 
2  0  1 0  1 
3  0  0 2  0 
4  0  0 0  0 
5  0  0 1  0 
6  0  1 0  0 

我的目标是找到的人总#谁买了儿童书,青年书,厨师书和do_it书。

所以,这里是我所做的:

sassign %>% summarise(sumchild=sum(child),sumyouth=sum(youth),sumcook=sum(cook),sumdo_it=sum(do_it)) 

这是我得到的输出:

sumchild sumyouth sumcook sumdo_it 
1 42723 19549 46830 23153 

问题1 ::这解决了我的目的,但反正是有,我可以得到一个排序按列输出?这是我从塔塔有:

-------------------------------------------------------------- 
    | Total Std. Err. [95% Conf. Interval] 
    -------------+------------------------------------------------ 
    cook | 46830 265.0706 46310.46 47349.54 
    child | 42723 250.4739 42232.07 43213.93 
    do_it | 23153 171.2552 22817.34 23488.66 
    youth | 19549 152.7226 19249.66 19848.34 

正如你可以在上面看到,STATA输出是很好的排序从顶部到底部。

问题2 ::有无论如何,我还可以包括SD和CI作为STATA显示?

问题3 ::无论如何,我可以排序标清,或CI而不是总和R?我看着描述功能,但我不确定,所以我想自己在这里问他们。

我从Stata过渡到R,所以我会很感激任何帮助,我可以得到。我也浏览过SO上的其他帖子,但其中大部分都是在使用group_by时的排序。

感谢

+1

使用排序? sassign%>%summary(sumchild = sum(child),sumyouth = sum(youth),sumcook = sum(cook),sumdo_it = sum(do_it))%>%sort(,decrease = T) – biomiha

+0

感谢biomiha。这有助于。但是,你知道我是否可以包含SD和CI吗?一种方法是在总结中使用SD(),但如果我有很多变量,则需要500个SD。有什么想法吗? – watchtower

+0

请参阅'summarise_all' /'summarise_each'来计算许多列的许多统计信息。 – aosmith

回答

3

您可以使用lapply遍历数据,计算统计数据,把它们放入一个数据帧,然后rbind他们来说,分类部分可以使用arrange函数来完成从dplyr

library(dplyr) 
do.call(rbind, lapply(df, function(col) { 
    t.result = t.test(col); 
    data.frame(SUM = sum(col), SD = sd(col), 
       CIL = t.result$conf.int[1], CIH = t.result$conf.int[2]) })) %>% 
    add_rownames(var = "CAT") %>% arrange(desc(SUM)) 

# Source: local data frame [4 x 5] 

#  CAT SUM  SD  CIL  CIH 
# <chr> <int>  <dbl>  <dbl> <dbl> 
# 1 cook  5 0.9831921 -0.1984635 1.865130 
# 2 youth  4 0.8164966 -0.1901939 1.523527 
# 3 child  3 1.2247449 -0.7852909 1.785291 
# 4 doit  1 0.4082483 -0.2617636 0.595097