我有一个名为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替换值,任何想法我会怎么做?
答案 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