【发布时间】:2018-07-31 15:24:30
【问题描述】:
我在将 if.. else 条件之一转换为 R 中的 ifelse () 以加快处理速度时遇到了一个问题。在这个问题中,如果满足条件,我必须使用上一行的值。我无法从我的代码中复制相同的结果下面是 if.. else 语句及其转换后的代码。
for (i in 1:nrow(newdata)){
if ((newdata$first == 1)){
newdata[, decvar][i] = groups + 1 - ceiling(round((newdata$cum/total) * groups, 4))
} #calculate decile; if var = 0, decile = 0
else if (newdata$first == 0){
newdata[, decvar][i] = newdata[, decvar][i-1]
}
}
使用 ifelse():
brv_trx1$decvar <- ifelse(((brv_trx1$first == 1)),(11 - ceiling(round((brv_trx1$cum/total) * 10, 4))),
ifelse(((brv_trx1$first == 0)), lag(brv_trx1$decvar) ,NA))
示例输出将如下所示:
variable First Decvar
45 1 10
42 1 10
31 1 9
30 0 9
30 0 9
29 0 8
29 0 8
28 0 8
21 1 7
我得到一些输出为 0,我不知道它来自哪里
【问题讨论】:
标签: r if-statement