2016-07-29 70 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