ifelse 有多个条件用于在 data.table R 中创建新变量
ifelse with multiple condition for creating new variable in data.table R
我有一个 data.table
并且想在 ifelse
语句中基于多个条件创建一个新变量但是我得到的结果似乎很奇怪。
让我们想象一下下面的简化示例。
DT <- data.table(replicate(2,sample(0:1,5,replace=TRUE)))
V1 V2
1: 1 0
2: 1 1
3: 1 1
4: 1 0
5: 0 1
我想在现有变量的基础上创建一个新变量。我使用 ifelse
语句如下:
DT[, new.var := ifelse(V1 > 0, 1, 0)]
DT[, new.var.mult := ifelse(V1 > 0 && V2 > 0, 1, 0)]
但是,这在多个条件的情况下不起作用。 (我知道这个任务可以在没有多个条件的情况下轻松解决,但我的问题更复杂。)
V1 V2 new_var new_var_multiple
1: 1 0 1 0
2: 1 1 1 0
3: 1 1 1 0
4: 1 0 1 0
5: 0 1 0 0
这可能是什么问题?
您只需使用一个与号 (&) 即可比较向量。
DT[, new.var.mult := ifelse(V1 > 0 & V2 > 0, 1, 0)]
插图:
> c(TRUE, TRUE) & c(FALSE, TRUE)
[1] FALSE TRUE
> c(TRUE, TRUE) && c(FALSE, TRUE)
[1] FALSE
我有一个 data.table
并且想在 ifelse
语句中基于多个条件创建一个新变量但是我得到的结果似乎很奇怪。
让我们想象一下下面的简化示例。
DT <- data.table(replicate(2,sample(0:1,5,replace=TRUE)))
V1 V2
1: 1 0
2: 1 1
3: 1 1
4: 1 0
5: 0 1
我想在现有变量的基础上创建一个新变量。我使用 ifelse
语句如下:
DT[, new.var := ifelse(V1 > 0, 1, 0)]
DT[, new.var.mult := ifelse(V1 > 0 && V2 > 0, 1, 0)]
但是,这在多个条件的情况下不起作用。 (我知道这个任务可以在没有多个条件的情况下轻松解决,但我的问题更复杂。)
V1 V2 new_var new_var_multiple
1: 1 0 1 0
2: 1 1 1 0
3: 1 1 1 0
4: 1 0 1 0
5: 0 1 0 0
这可能是什么问题?
您只需使用一个与号 (&) 即可比较向量。
DT[, new.var.mult := ifelse(V1 > 0 & V2 > 0, 1, 0)]
插图:
> c(TRUE, TRUE) & c(FALSE, TRUE)
[1] FALSE TRUE
> c(TRUE, TRUE) && c(FALSE, TRUE)
[1] FALSE