2013-02-02 50 views
15

Tôi có tập dữ liệu với ba cột. Cột đầu tiên là loại, cột thứ hai là khu vực và cột thứ ba có giá trị. Tôi muốn viết một vector logic sao cho type = 1, area = 3 và value = 6. Tôi đã có thể tạo ra các khung dữ liệu bằng cách sử dụng tập con nhưng tôi không thể tạo ra một vector hợp lý.Tạo một vector hợp lý trong R và sử dụng chức năng

hello <- read.csv("type.csv") 
hello1 <- subset(hello, type==1 & area ==3 & worth ==6) 

Có nhiều giá trị NA trong cột có giá trị. Tập dữ liệu là https://www.dropbox.com/s/gjjwmnr8uxmy18y/type.csv

Cảm ơn.

Jdbaba

+3

thử: 'với (xin chào, xin chào [loại == 1 & khu vực == 3 & giá trị == 6,])' –

+0

@ Tyler, cảm ơn câu trả lời của bạn. Trên thực tế những gì tôi cần làm là gán một vector logic xác định loại == 1, diện tích == 3 và giá trị == 6. Sau đó tôi cần phải áp dụng hàm() để xác định các hàng của khung dữ liệu khi vectơ logic là đúng. –

+2

'mà (với (xin chào, loại == 1 & khu vực == 3 & Worth == 6))' – Arun

Trả lời

16

Vì vậy, câu hỏi vẫn trả lời:

which(with(hello, type == 1 & area == 3 & Worth == 6)) 

Hãy nhớ rằng, bạn chỉ có thể sử dụng nó như:

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 

là tốt. Tuy nhiên, khi bạn có nhiều câu lệnh để kiểm tra, with có ích vì nó cho phép bạn kiểm tra mà không cần gõ hello$ mỗi lần.

+1

Có, nó được trả lời. Cảm ơn. –

+1

Nếu như OP cho thấy vectơ sẽ được sử dụng để lập chỉ mục, thì bạn không cần 'which'. Trong thực tế, nó thậm chí còn được khuyến khích không sử dụng nó; Tôi có ít nhất một ví dụ trong tâm trí mà nó có thể dẫn đến rắc rối và nó là chỉ mục tiêu cực: 'hello [-which (bool.vec),]' không giống như 'hello [! Bool.vec,]' khi ' bool.vec' là 'FALSE' ở khắp mọi nơi. – flodel

6

Mặc dù một câu trả lời đã được chấp nhận, OP yêu cầu tạo một vector logic, và câu trả lời

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 

trả về các hàng mà phù hợp với những điều kiện này. Để thay vì trả về một vector logic, chỉ cần sử dụng các lập luận để which, tức là

hello$type1 == 1 & hello$area == 3 & hello$Worth == 6 
Các vấn đề liên quan