使用data.table语法更新列

时间:2017-01-25 08:36:09

标签: r data.table

我有一个带有2列的data.table DT:ID,QTY

     ID        QTY
    000001       0
    000002       1
    000002       2
    000004       0
    000005       1
    000006       2

我想为Qty大于1的那些行更新Qty列,并用1替换相应的Qty值。 这是一项简单的任务,可以通过使用sapply或仅使用列上的哪个命令来执行。 但我想知道是否可以使用data.table [i,j,by / keyby,.SD]选项来实现。

预期产出:

     ID        QTY
    000001       0
    000002       1
    000002       1
    000004       0
    000005       1
    000006       1

1 个答案:

答案 0 :(得分:2)

我们可以通过使用as.integer

将逻辑向量转换为二进制来实现
DT[, QTY := as.integer(QTY>0)]
DT
#   ID QTY
#1:  1   0
#2:  2   1
#3:  2   1
#4:  4   0
#5:  5   1
#6:  6   1

或者在i中指定并更新'QTY'

DT[QTY>0, QTY := 1]