我想创建一个具有三种特征的变量“ WKA”:0,1和2。
WKA should be 0 if WKA_ohneJB[, "QUANTITY"]>=1 && WKA_ohneJB[, "WKA"]==0,
WKA should be 1 if WKA_ohneJB[, "QUANTITY"]>=1 && WKA_ohneJB[, "WKA"]>=1,
WKA should be 2 if WKA_ohneJB[, "QUANTITY"]==0 && WKA_ohneJB[, "WKA"]==0
如何在R中实现呢?
答案 0 :(得分:2)
代替if/else
和&&
,我们可以将ifelse
与&
一起使用,因为ifelse
是矢量化的
WKA_ohneJB$newWKA <- with(WKA_ohneJB, ifelse(QUANTITY >=1 & WKA == 0, 0,
ifelse(QUANTITY >=1 & WKA >=1, 1, 2)))
或与case_when
library(dplyr)
WKA_ohneJB <- WKA_ohneJB %>%
mutate(newWKA = case_when(QUANTITY >= 1 & WKA== 0 ~ 0L,
QUANTITY >=1 & WKA >=1 ~ 1L,
QUANTITY == 0 & WKA == 0 ~ 2L,
TRUE ~ NA_integer_))