2016-04-17 19 views
0

Ich möchte in der Lage sein, die Zählungen, die Standardabweichung und den Mittelwert bestimmter Variablen zu erhalten, nachdem sie gruppiert wurden. Ich bin in der Lage, den Mittelwert und Standard zu bekommen, aber die Anzahl der Zählungen gibt mir einen Fehler. Dies ist der folgende Code, den ich habe:Verwenden von dplyr, um Zählungen zu erhalten

NYC_Trees %>% 
    group_by(Condition) %>% 
    dplyr::summarise(mean = round(mean(Compensatory.Value), 2), 
        sd = round(sd(Compensatory.Value), 2), 
        count(NYC_Trees,Condition, wt = Compensatory.Value)) 

Ich bekomme den Fehler: kann nicht umgehen.

Ich möchte die Ausgabe wie:

Condition Native  N  Mean Std 

Was mache ich falsch?

+0

bei der Dokumentation der Suche nach 'count', sieht es aus wie sollte man das Ergebnis von' summarise' in 'count' kochend werden , nicht in "summieren" nennen. Selbst wenn Sie es mit "summieren" aufrufen, müssten Sie das Ergebnis auch etwas zuweisen, Ihr Code tut das nicht. – steveb

+0

Sollten Sie 'n()' anstelle von 'count()' verwenden? –

+0

Wofür stehen 'N' und' Native'? Steht "N" für die Anzahl der Beobachtungen in jeder Gruppe? – Psidom

Antwort

1

count(NYC_Trees,Condition, wt = Compensatory.Value) sollte gleich sein wie NYC_Trees %>% group_by(Condition) %>% summarise(n = sum(Compensatory.Value). Dies gibt eindeutig einen Vektor zurück und daher kann die summarise Funktion nicht damit umgehen.

So könnte man einfach die Zeile haben n = sum(Compensatory.Value) innerhalb des summarise:

NYC_Trees %>% 
    group_by(Condition) %>% 
    dplyr::summarise(mean = round(mean(Compensatory.Value), 2), 
        sd = round(sd(Compensatory.Value), 2), 
        n = sum(Compensatory.Value)) 

Ist das, was Sie zu tun versuchen? Wenn Sie nur die Anzahl der Werte in jeder Gruppe möchten, können Sie n = n() stattdessen verwenden können:

NYC_Trees %>% 
    group_by(Condition) %>% 
    dplyr::summarise(mean = round(mean(Compensatory.Value), 2), 
        sd = round(sd(Compensatory.Value), 2), 
        n = n()) 
+0

Yup, das macht vollkommen Sinn. Danke für das Löschen :) –

+0

Warum die '::' Notation für 'summieren', aber nicht' group_by' oder 'n'? Hat es einen Namenskonflikt mit der "Zusammenfassung" eines anderen gemeinsamen Pakets? Nur neugierig. – alistaire

+0

@alistaire: Ich habe das vom OP kopiert, also solltest du wohl dort nachfragen. Normalerweise verwende ich entweder die '::' -Notation oder nehme an, dass das Paket in den Namespace geladen wird. Ich hatte nie einen Namenskonflikt mit 'summarise', aber offensichtlich verwende ich nur eine begrenzte Anzahl von Paketen. – shadow

Verwandte Themen