【发布时间】:2020-12-08 09:09:53
【问题描述】:
在几个阈值和计算之后,我需要将原始值重新编码为 0-1。这是公式的样子:
我认为这只是说:
- 如果 x x = 0
- 如果 x > 60 & x = 0.05*x -3
- 如果 x > 80 -> x = 1
这是我的方法:
# V is from 0-600 m3/ha
set.seed(3)
V_pine = sample.int(100, 10) # generate 10 random numbers up to 100
> V_pine
[1] 5 58 12 36 99 95 8 20 74 55
# Recode values following multiple ifelse statements
for (i in V_pine){
if (i <= 60) {
i <- 0
} else if (i > 60 & i<= 80) {
i <- (0.05* i )-3
} else if (i > 80) {
i<- 1
}
print(i)
}
似乎这会带来正确的结果:
Output:
0 0 0 0 1 1 0 0 0.7 0
然而,由于我还有许多类似的函数/公式,我想知道是否有另一种方法可以简化for loop 和ifelse 语句?
我的数据将存储在data.frame 中,因此使用dplyr 和mutate 会很棒。感谢您的建议!
【问题讨论】: