我有一个带有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
答案 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]