2012-06-11 28 views
5

Tôi chỉ tự hỏi liệu tôi có thể chắc chắn rằng split() luôn phân loại các kết quả? Quy tắc phân loại là gì? Ví dụ này hoạt động, nhưng tôi chưa tìm thấy dòng trong các trang trợ giúp. Xin lỗi nếu tôi hiểu sai sự giúp đỡ.được chia luôn phân loại nội bộ các khung dữ liệu kết quả

dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac = c(2,1)) 
split(dat.exmpl, dat.exmpl$fac) 
dat.exmpl <- data.frame(cbind(a=11:20, b=rep(3,10)), fac=rep(c("blueb","bluea"))) 
split(dat.exmpl, dat.exmpl$fac) 

ExtraQ: Có cách nào để duy trì thứ tự được cung cấp không?

Trả lời

2

Thứ tự sắp xếp của split là thứ tự yếu tố của biến nhóm của bạn. Vì vậy, nếu biến nhóm của bạn là một yếu tố, thì mức độ của yếu tố đó được giữ nguyên vẹn.

Một ví dụ: sửa đổi dữ liệu của bạn để fac có mức c("blueb","bluea"):

dat.exmpl <- data.frame(
    a=11:20, 
    b=rep(3,10), 
    fac=factor(rep(c("blueb","bluea")), levels=c("blueb","bluea")) 
) 

Sau đó, kết quả của split là theo thứ tự quyết định mức fac:

split(dat.exmpl, dat.exmpl$fac) 
$blueb 
    a b fac 
1 11 3 blueb 
3 13 3 blueb 
5 15 3 blueb 
7 17 3 blueb 
9 19 3 blueb 

$bluea 
    a b fac 
2 12 3 bluea 
4 14 3 bluea 
6 16 3 bluea 
8 18 3 bluea 
10 20 3 bluea 
+1

Cảm ơn câu trả lời tốt . Tuy nhiên, bạn có thể giải thích chi tiết hơn về "thứ tự yếu tố của biến nhóm của bạn" có nghĩa là gì không? Không chia() nội bộ ép buộc biến nhóm thành các yếu tố? và thứ tự sắp xếp thông thường là gì? Đối với biến số, điều này là hiển nhiên nhưng đối với các ký tự tôi không chắc chắn tại sao nó lại sắp xếp "blueb" trước "bluea". nó có thực sự phân loại theo chuỗi không? – Sebastian

+1

Nếu biến nhóm đã là yếu tố, thì 'split' không thực hiện bất kỳ phân loại nào. Trong ví dụ của tôi, 'blueb' trước' bluea' bởi vì đó là cách tôi xác định các mức yếu tố, tức là đó là điểm của ví dụ của tôi. Tóm lại: 'split' không phân loại. Nếu nó có vẻ như sắp xếp đang xảy ra, đó là vì cách 'factor()' giao dịch với các mức yếu tố (thường được sắp xếp theo từ điển). Để biết thêm chi tiết, hãy xem phần trợ giúp cho '? Factor', đặc biệt là đối số' levels'. – Andrie

+1

Cảm ơn bạn đã làm rõ. Tuy nhiên, tôi có nghĩa là sắp xếp phân chia nếu bạn KHÔNG sử dụng các yếu tố (như trong ví dụ ban đầu của tôi). Tôi có phải là sự phân chia không co giật bên trong của biến nhóm để một yếu tố mà việc phân loại xảy ra? – Sebastian

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