从数据框创建逻辑向量

时间:2013-02-02 19:07:25

标签: r dataframe

我有一个名为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")

我希望能够查看val1和val2列,如果val1> 10,则将值替换为TRUE,否则替换为FALSE并查看val2,如果val2< 5,则将值替换为TRUE,否则为FALSE

我可以使用子集函数来选择它们,而不是使用子集,我喜欢用TRUE或FALSE替换值,任何想法我会怎么做?

2 个答案:

答案 0 :(得分:12)

只需使用布尔运算符:

y$val1 > 10 | (y$val1 <=10 & y$val2<5)
# [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

答案 1 :(得分:4)

 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