我想根据几种条件(考虑其他变量)在数据集(f)中创建一个新变量“影响”。这是我的代码:
f$influence <- if (f$ApportLysine_gj <= f$LysBesoinPlus5 & f$ApportLysine_gj >= f$LysBesoinMoins5){
f$influence = 1
} else if (f$ApportLysine_gj > f$LysBesoinPlus5 & f$ApportLysine_gj < f$LysExces20){
f$influence = 2
} else if (f$ApportLysine_gj >= f$LysExces20) {
f$influence = 3
} else if (f$ApportLysine_gj < f$LysBesoinMoins5 & f$ApportLysine_gj > f$LysDeficit20){
f$influence = 4
} else {
f$influence = 5}
我只收到一条错误消息“参数长度为零”。 我在做什么错了?
答案 0 :(得分:3)
我经常发现,如果我在编码变量时有很多if
,else if
或ifelse
,那么dplyr
的{{1}}非常方便。请注意以下几点,请记住,如果没有您的数据,我将无法进行测试。
case_when
答案 1 :(得分:1)
您可以尝试使用逻辑索引并根据其值分配新变量的值。
f$influence <- 5
i <- f$ApportLysine_gj <= f$LysBesoinPlus5 & f$ApportLysine_gj >= f$LysBesoinMoins5
f$influence[i] <- 1
i <- f$ApportLysine_gj > f$LysBesoinPlus5 & f$ApportLysine_gj < f$LysExces20
f$influence[i] <- 2
i <- f$ApportLysine_gj >= f$LysExces20
f$influence[i] <- 3
i <- f$ApportLysine_gj < f$LysBesoinMoins5 & f$ApportLysine_gj > f$LysDeficit20
f$influence[i] <- 4