2011-09-11 73 views
69

Tôi đang làm việc với tập dữ liệu LearnBayes. Đối với những người muốn xem dữ liệu thực tế:Lọc khung dữ liệu theo giá trị trong cột

install.packages('LearnBayes') 

Tôi đang cố lọc ra các hàng dựa trên giá trị trong cột. Ví dụ: nếu giá trị cột là "nước", thì tôi muốn hàng đó. Nếu giá trị cột là "sữa", thì tôi không muốn nó. Cuối cùng, tôi đang cố gắng lọc ra tất cả những người uống cột là "nước".

+2

Hãy thử đọc '? '['' Và sau đó đọc '? Subset'. – joran

+0

Cảm ơn các con trỏ. Lời khuyên chắc chắn hữu ích và mong muốn sử dụng nó trong tương lai. – user722224

+4

Tôi đề nghị bạn đọc hướng dẫn sử dụng R rất tốt: http://cran.r-project.org/doc/manuals/R-intro.html – Andrie

Trả lời

51

Hãy thử điều này:

subset(studentdata, Drink=='water') 

rằng nên làm điều đó.

+0

Cảm ơn bạn! Tôi đã thử một số biến thể của điều đó nhưng phải đã được tắt trên dấu chấm câu hoặc một cái gì đó ngớ ngẩn như thế. Tôi đánh giá cao sự giúp đỡ. – user722224

155

Lệnh tập hợp con là không cần thiết. Chỉ cần sử dụng dữ liệu khung indexing

studentdata[studentdata$Drink == 'water',] 

Đọc cảnh báo từ ?subset

Đây là một chức năng thuận tiện dành cho việc sử dụng một cách tương tác. Đối với chương trình , tốt hơn nên sử dụng các chức năng đặt giá thầu tiêu chuẩn như ‘[’ và đặc biệt là đánh giá phi tiêu chuẩn đối số ‘tập hợp con’ có thể có hậu quả không lường trước được.

+0

Cảm ơn bạn! –

+2

Cảm ơn @adamleerich. Ngoài sự tò mò, lý do đằng sau dấu phẩy là gì? – ThinkBonobo

+3

Cú pháp '[]' lập chỉ mục vào khung dữ liệu 2 chiều theo cách thông thường mà các ma trận được lập chỉ mục trong phép toán: hàng và sau đó cột, được phân tách bằng dấu phẩy. Trong trường hợp này, chúng ta sẽ truyền một vectơ của các chỉ mục hàng ('studentData $ Drink == 'water'' chọn ra các hàng mà chúng ta quan tâm), nhưng vì chúng ta không muốn giới hạn các cột mà chúng ta nhận được hàng (chúng tôi muốn tất cả chúng), chúng tôi để phần cột của cặp chỉ mục trống (vì vậy không có gì sau dấu phẩy). Đây là cú pháp đường để tránh phải đưa ra một vectơ của tất cả các chỉ số cột. – Will

25

nghĩ rằng tôi muốn cập nhật này với một giải pháp dplyr

library(dplyr)  
filter(studentdata, Drink == "water") 
+13

hoặc với các đường ống 'studentdata%>% filter (Uống ==" nước ")' –

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