带嵌套条件的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