带嵌套条件的R ifelse语句

带嵌套条件的R ifelse语句,r,if-statement,R,If Statement,正如您在最后一条语句中所看到的,如果l==“d”&t==7,那么l1应该等于5,但它被设置为等于4。 DPLYR < /代码>包;它的可读性会更好。ifelse执行会在第一次点击TRUE的地方停止 只需重新安排你的条件- x=data.frame("l"=c('a','b','d','a','c','c','d'), "t"=c(1:7)) x$l1 = ifelse(x$l=="a",1, ifelse(x$l=="b",2,

正如您在最后一条语句中所看到的,如果
l==“d”&t==7
,那么l1应该等于5,但它被设置为等于4。

执行在它第一次点击
TRUE
的地方停止

只需重新安排你的条件-

x=data.frame("l"=c('a','b','d','a','c','c','d'),
             "t"=c(1:7))
x$l1 = ifelse(x$l=="a",1,
              ifelse(x$l=="b",2,
                     ifelse(x$l=="c",3,
                            ifelse(x$l=="d" ,4,
                                   ifelse(x$l=="d" & x$t==7,5,NA)))))

也考虑使用<代码> CASE()<代码> > <代码> DPLYR < /代码>包;它的可读性会更好。

ifelse
执行会在第一次点击
TRUE
的地方停止

只需重新安排你的条件-

x=data.frame("l"=c('a','b','d','a','c','c','d'),
             "t"=c(1:7))
x$l1 = ifelse(x$l=="a",1,
              ifelse(x$l=="b",2,
                     ifelse(x$l=="c",3,
                            ifelse(x$l=="d" ,4,
                                   ifelse(x$l=="d" & x$t==7,5,NA)))))

也考虑使用<代码> CASE()<代码> > <代码> DPLYR < /代码>包;它会更具可读性。

根据@Shree的回答,这里是
tidyverse
版本:

库(dplyr)
#> 
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集
x%
as_tible()%>%
变异(l1=情况_,当(
l==“a”~1,
l==“b”~2,
l==“c”~3,
l==“d”&t==7~5,
l==“d”~4
))
#>#tibble:7 x 3
#>l t l1
#>     
#>一一一一
#>2B22
#>三维3 4
#>4 a 4 1
#>5 c 5 3
#>6 c 6 3
#>7 d 7 5

由(v0.3.0)于2019-06-2017年根据@Shree的答案创建,现在是
tidyverse
版本:

库(dplyr)
#> 
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集
x%
as_tible()%>%
变异(l1=情况_,当(
l==“a”~1,
l==“b”~2,
l==“c”~3,
l==“d”&t==7~5,
l==“d”~4
))
#>#tibble:7 x 3
#>l t l1
#>     
#>一一一一
#>2B22
#>三维3 4
#>4 a 4 1
#>5 c 5 3
#>6 c 6 3
#>7 d 7 5

由(v0.3.0)于2019-06-17创建,最好不要在时使用任何嵌套的
ifelse
case\u。这可以通过键/值数据集合并轻松高效地完成

x$l1 = ifelse(x$l=="a",1,
              ifelse(x$l=="b",2,
                     ifelse(x$l=="c",3,
                            ifelse(x$l=="d" & x$t==7,5,
                                   ifelse(x$l=="d" ,4,NA)))))
x
  l t l1
1 a 1  1
2 b 2  2
3 d 3  4
4 a 4  1
5 c 5  3
6 c 6  3
7 d 7  5
keydat%
变异(l1=替换(l1,l='d'&t==7,5))
#l t l1
#一一一一
#2B22
#三维3 4
#4 a 4 1
#5 c 5 3
#6 c 6 3
#7 d 7 5

最好不要在
时使用任何嵌套的
ifelse
case\u。这可以通过键/值数据集合并轻松高效地完成

x$l1 = ifelse(x$l=="a",1,
              ifelse(x$l=="b",2,
                     ifelse(x$l=="c",3,
                            ifelse(x$l=="d" & x$t==7,5,
                                   ifelse(x$l=="d" ,4,NA)))))
x
  l t l1
1 a 1  1
2 b 2  2
3 d 3  4
4 a 4  1
5 c 5  3
6 c 6  3
7 d 7  5
keydat%
变异(l1=替换(l1,l='d'&t==7,5))
#l t l1
#一一一一
#2B22
#三维3 4
#4 a 4 1
#5 c 5 3
#6 c 6 3
#7 d 7 5