2015-04-22 15 views
5

Tôi có một dataframe (nói x) trong R:tập hợp con số n của các hàng từ một dataframe, dựa trên một biến phân loại, trong 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 

Tôi cần một mã số R rằng sẽ sản xuất một dataframe mới, nói y, có tập hợp con của X theo Giới tính và chỉ ba hàng đầu tiên của mỗi giới tính (1: 3) để cho kết quả như sau.

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

Trả lời

4

Hãy thử slice từ dplyr

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

Hoặc sử dụng data.table

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

Tôi đã thử hai gói này. Và cả hai đều cho kết quả chính xác. Tôi thích định dạng của dplyr tốt nhất. –

2

Cho by thử:

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

đây là cách nhanh nhất để có được kết quả mà tôi cần mà không phải cài đặt gói. –

Các vấn đề liên quan