r语言 - 否则,如果要创建一个新的变量 DEBUG



我想在我的数据集(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}

我只收到一条错误消息"参数长度为零"。 我做错了什么?

我经常发现,如果我在编码变量时有很多ifelse ififelsedplyrcase_when是非常方便的。请参阅下文,请记住,如果没有您的数据,我无法对此进行测试。

library(dplyr)
f %>%
mutate(influence = case_when(
ApportLysine_gj <= LysBesoinPlus5 & ApportLysine_gj >= LysBesoinMoins5 ~ 1,
ApportLysine_gj  > LysBesoinPlus5 & ApportLysine_gj < LysExces20 ~ 2,
ApportLysine_gj >= LysExces20 ~ 3,
ApportLysine_gj < LysBesoinMoins5 & ApportLysine_gj > LysDeficit20 ~ 4,
TRUE ~ 5
))

您可以尝试使用逻辑索引并根据其值分配新变量的值。

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

相关内容

最新更新