2017-09-11 1 views
0

Ich frage mich, ob dies in R: möglich ist Ich habe 2 Spalten. Column A (primaryhistory2.DEPT) hat eine Reihe von kategorischen Daten, column B (primaryhistry2.ACT.ENROLL) hat Nummern und NAs. looks like thisFassen Sie jede Kategorie von Zeilen in einer Spalte zusammen mit R

ich eine Zusammenfassung der Spalte B für jede Kategorie in Spalte A So etwas wie, für "NUT" in Spalte A bekommen, ich will min, max, mean, median, NAs usw. sehen Und ich würde das gerne für jede Kategorie sehen. Wie wenn Sie summary() Befehl verwenden.

Nicht sicher, ob das möglich ist .. Vielen Dank im Voraus!

@Moody_Mudskipper Die Ergebnisse sind, was ich suche. Aber ohne Spaltennamen ist es schwer zu lesen.

und für die Basis R, es tut nicht zählt für NAs, die ich sehe eine Menge von NAs in meiner Datei. enter image description here

Antwort

4

Sehr möglich mit dplyr Bibliothek:

library(dplyr) 
most.of.the.answer = df %>% 
    group_by(primaryhistory2.DEPT) %>% 
    summarise(min = min(primaryhistry2.ACT.ENROLL, na.rm = TRUE), max = max(primaryhistry2.ACT.ENROLL, na.rm = TRUE), mean = mean(primaryhistry2.ACT.ENROLL, na.rm = TRUE), median = median(primaryhistry2.ACT.ENROLL, na.rm = TRUE)) 

(vorausgesetzt, Ihr Datenrahmen genannt wird df)

zum Zählen der NA, versuchen dplyr ‚s filter Merkmal:

count.NAs = df %>% filter(is.na(primaryhistry2.ACT.ENROLL)) %>% 
    group_by(primaryhistory2.DEPT) %>% 
    summarise(count.NA = n()) 

I Ich überlasse es Ihnen, die beiden Datenrahmen zusammenzuführen.

+2

müssen Sie na.rm = T auf jeder der Statistiken an, die Sie sonst wird NA bekommen. –

+0

Dies funktioniert auch perfekt! Vielen Dank! –

+0

Danke. Zum Zählen von NAs kann ich nur an einen separaten Datenrahmen denken und später zusammenführen. Ich bearbeite meine Frage – lebelinoz

3

mit Sockel R können Sie dies tun:

temp <- aggregate(primaryhistory2..ACT.ENROLL ~ primaryhistory2.DEPT,df,function(x){c(mean = mean(x,na.rm=T),median = median(x,na.rm=T),min = min(x,na.rm=T),max = max(x,na.rm=T),nas=sum(is.na(x)))}) 
res <- cbind(temp[1],temp[[2]]) 

Wenn Sie summary verwenden möchten:

summary1 <- sapply(unique(df$primaryhistory2.DEPT),function(x) summary(subset(df,primaryhistory2.DEPT == x)$primaryhistory2..ACT.ENROLL)) 
colnames(summary1) <- unique(df$primaryhistory2.DEPT) 
+0

Hi, die Zusammenfassung funktioniert einwandfrei !! Nur die Spaltennamen zeigen nicht, der Fehler sagt "Fehler in' colnames <-' ('* tmp *', Wert = c (17L, 33L, 62L, 43L, 68L, 20L,: Versuch, 'colnames 'auf einem Objekt mit weniger als zwei Dimensionen " –

+0

sollten Sie Ihre Bildschirmaufnahme mit dem Ergebnis von' dput (Kopf (df, 50)) ersetzen ' –

+0

Ja und für die Basis R, es funktioniert auch, außer es zählt nicht die NAs. –

Verwandte Themen