R Data.Table 多重赋值 IfElse

bvo*_*owe 2 r data.table

data1=data.frame(Year=c(1,1,1,2,2,2,3,3,3),
"Group=c('A','A','A','B','B','B','C','C','C'),
"A=c(5,6,7,10,9,6,10,7,10),
"B=c(8,10,5,6,9,8,9,5,8),
"C=c(7,9,5,5,8,7,9,5,10))



data2=data.frame(Year=c(1,1,1,2,2,2,3,3,3),
"Group=c('A','A','A','B','B','B','C','C','C'),
"A=c(5,6,7,10,9,6,0,0,0),
"B=c(8,10,5,6,9,8,0,0,0),
"C=c(7,9,5,5,8,7,-99,-99,-99))
Run Code Online (Sandbox Code Playgroud)

我有'data1'并希望通过使用data.table中的fifelse来获得'data2'。规则是,如果 Group = 'C',则列 'A' 和 'B' 等于 0,列 'C' 等于 -99。

lin*_*nog 6

在 中使用条件替换data.table

data.table::setDT(data1)
data1[Group == "C",`:=`(A = 0, B = 0, C = -99)]
Run Code Online (Sandbox Code Playgroud)

请注意,最终的数据帧是data1:=通过引用更新),而不是data2