5

我有一个名为 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 替换值,有什么想法可以做到这一点吗?

4

2 回答 2

12

只需使用布尔运算符:

y$val1 > 10 | (y$val1 <=10 & y$val2<5)
# [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
于 2013-02-02T19:11:52.380 回答
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
于 2013-02-02T19:28:04.767 回答