2016-07-29 33 views
0

Meine Daten zusammenfassend wie folgt aussieht:Sortierung Ausgabe von dplyr ::

(sassign die data.frame ist, die die Daten hält)

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 

Mein Ziel ist es insgesamt # von Menschen zu finden, wer kaufte Kinderbücher, Jugendbücher, Kochbücher und do_it Bücher.

So, hier ist was ich getan habe:

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

Hier ist der Ausgang bekam ich:

sumchild sumyouth sumcook sumdo_it 
1 42723 19549 46830 23153 

Frage 1 :: Das löst mein Ziel, aber es trotzdem kann ich ein sortiert bekommen spaltenweise ausgeben? Hier ist, was ich von Stata bekam:

-------------------------------------------------------------- 
    | 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 

Wie Sie oben sehen können, STATA Ausgang schön von oben nach unten sortiert.

Frage 2 :: Gibt es auf jeden Fall kann ich auch SD und CI wie STATA zeigt?

Fragen 3 :: Gibt es auf jeden Fall kann ich auf SD oder CI statt Summe in R sortieren? Ich schaute auf die Funktion, aber ich war mir nicht sicher, also dachte ich daran, sie hier zu fragen.

Ich bin von Stata zu R wechseln, so würde ich für jede Hilfe dankbar sein, die ich bekommen kann. Ich habe auch andere Beiträge zu SO durchgesehen, aber die meisten von ihnen befassen sich mit der Bestellung bei der Verwendung von group_by.

Dank

+1

Verwenden Sie Sortieren? sassign%>% summary (sumchild = Summe (Kind), Sumyouth = Summe (Jugend), Sumcook = Summe (Koch), sumdo_it = Summe (do_it))%>% sort (, abnehmend = T) – biomiha

+0

Danke biomiha. Das hilft. Weißt du aber, ob ich SD und CI einbeziehen kann? Eine Möglichkeit ist die Verwendung von SD() in der Zusammenfassung, aber dann würde ich 500 SD benötigen, wenn ich viele Variablen habe. Irgendwelche Gedanken? – watchtower

+0

Siehe 'summary_all' /' summarise_each' um viele Statistiken für viele Spalten zu berechnen. – aosmith

Antwort

3

Sie lapply eine Schleife durch Ihre Daten verwenden können, um die Statistiken berechnen, um sie in einem Datenrahmen setzen und rbind sie dann kann die Art Teil der arrange Funktion von dplyr getan werden:

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