Creating a logical vector from a data frame

I have a data frame named y

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")

I would like to be able to view the columns val1 and val2, and if val1> 10, replace the value TRUE else FALSE and look at val2, and if val2 <5, replace the value TRUE else FALSE

I can use the subset function to select them, but instead of using the subset, I like to replace the values ​​with TRUE or FALSE, any ideas how I would do this?

+5
source share
2 answers

Just use the boolean operators:

y$val1 > 10 | (y$val1 <=10 & y$val2<5)
# [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
+12
source
 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
+3
source

All Articles