我必须在数据表中执行逐行逻辑操作,让我用例子来解释一下。假设我有如下给出的数据表(DT)
V1 V2 V3 V4 V5
AAE CDG 2 0 0
AAE CDG 2 5 5
AAE ORY 2 4 4
AAE ORY 2 0 0
AAE ORY 2 5 5
AAE ORY 2 3 3
现在,根据 V5 的值,我想在数据表中添加额外的列 V6,这是逻辑操作。我做了这样的事情来做到这一点-
DT[, V6 := if(V5 == 0){1
}else if(V5 == 1){2
}else if(V5 == 2){3
}else if(V5 == 3){4
}else if(V5 == 4){5
}else if(V5 == 5){6}
]
但这并没有给出预期的结果,应该是
V1 V2 V3 V4 V5 V6
AAE CDG 2 0 0 1
AAE CDG 2 5 5 6
AAE ORY 2 4 4 5
AAE ORY 2 0 0 1
AAE ORY 2 5 5 6
AAE ORY 2 3 3 4
鉴于给出以下结果-
V1 V2 V3 V4 V5 V6
AAE CDG 2 0 0 1
AAE CDG 2 5 5 1
AAE ORY 2 4 4 1
AAE ORY 2 0 0 1
AAE ORY 2 5 5 1
AAE ORY 2 3 3 1
发生这种情况是因为 V5 的第一个值(即 0)用于逻辑操作,而不是一次动态地使用一个值或行值。如何更改 [,J] 参数以获得所需的结果。我可以使用 for 循环来执行此操作,但这样做的效率非常低。