我有一个 `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
这里可能存在什么问题呢?
ifelse
,只需使用DT[, new_var_multiple := (V1 > 0 & V2 > 0) + 0]
。这个代码行可以为数据表添加一个名为new_var_multiple
的新列,其中包含一个逻辑值(V1 > 0 & V2 > 0)
的结果(如果为真,则为1,否则为0)。 - David Arenburg