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))
我有'data1'并希望通过使用data.table中的fifelse来获得'data2'。规则是,如果 Group = 'C',则列 'A' 和 'B' 等于 0,列 'C' 等于 -99。
在 中使用条件替换data.table,
data.table::setDT(data1)
data1[Group == "C",`:=`(A = 0, B = 0, C = -99)]
请注意,最终的数据帧是data1(:=通过引用更新),而不是data2