2015-04-22 16 views
5

Ich habe einen Datenrahmen (zum Beispiel x) in R:Subset n Anzahl der Zeilen von einem Datenrahmen, basierend auf einer kategorischen Variablen in R

> x 
Height Weight Gender 
5  60 m 
5  70 m 
6  80 m 
4  90 m 
4  60 m 
5  70 f 
5  80 f 
6  60 f 
4  90 f 
4  60 f 

I einen R-Code benötigen, die einen neuen Datenrahmen produzieren, Sag y, das nimmt die Teilmenge von X nach Geschlecht und nur die ersten drei Reihen jedes Geschlechts (1: 3), um das Ergebnis wie folgt zu geben.

>y 
Height Weight Gender 
5  60  m 
5  70  m 
6  80  m 
5  70  f 
5  80  f 
6  60  f 

Antwort

4

Versuchen slice von dplyr

library(dplyr) 
x %>% 
    group_by(Gender) %>% 
    slice(1:3) 

Oder mit data.table

library(data.table) 
setDT(x)[,.SD[1:3] , Gender] 
+0

ich diese beiden Pakete ausprobiert. Und beide geben die Ergebnisse richtig an. Ich mochte das Format von dplyr das Beste. –

2

Geben by einen Versuch:

do.call(rbind, by(X, X$Gender, head, 3)) 
+0

Dies war der schnellste Weg, um das gewünschte Ergebnis zu erhalten, ohne Pakete installieren zu müssen. –

Verwandte Themen