2013-02-02 40 views
5

Tôi có một khung dữ liệu được gọi là ytạo ra một vector logic từ khung dữ liệu

dput(y) 
structure(list(val1 = c(25L, 615L, 30L, 76L, 97L, 211L, 0L, 40L, 
10L, 10L), val2 = c(101L, 286L, 124L, 77L, 176L, 120L, 0L, 8L, 
56L, 49L), val3 = c(157L, 454L, 106L, 242L, 144L, 31L, 0L, 40L, 
45L, 57L)), .Names = c("val1", "val2", "val3"), row.names = c(NA, 
10L), class = "data.frame") 

Tôi muốn để có thể nhìn vào cột VAL1 và VAL2 và nếu VAL1> 10, thay thế các giá trị với TRUE khác FALSE và nhìn vào VAL2 và nếu VAL2 < 5, thay thế các giá trị với TRUE khác FALSE

tôi có thể sử dụng chức năng tập hợp con để chọn chúng, nhưng thay vì sử dụng bộ trang bị, tôi muốn thay thế các giá trị với TRUE hoặc FALSE, bất kỳ ý tưởng làm thế nào tôi sẽ làm cái này?

Trả lời

12

Chỉ cần sử dụng các toán tử logic:

y$val1 > 10 | (y$val1 <=10 & y$val2<5) 
# [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE 
3
transform(dat, x= val1 > 10 , y = val2 < 5) 
    val1 val2 val3  x  y 
1 25 101 157 TRUE FALSE 
2 615 286 454 TRUE FALSE 
3 30 124 106 TRUE FALSE 
4 76 77 242 TRUE FALSE 
5 97 176 144 TRUE FALSE 
6 211 120 31 TRUE FALSE 
7  0 0 0 FALSE TRUE 
8 40 8 40 TRUE FALSE 
9 10 56 45 FALSE FALSE 
10 10 49 57 FALSE FALSE 
Các vấn đề liên quan