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' 等于零,列 'C' 等于 -99。
最佳答案
在data.table
中使用条件替换,
data.table::setDT(data1)
data1[Group == "C",`:=`(A = 0, B = 0, C = -99)]
请注意,最终数据帧是 data1
(:=
通过引用更新),而不是 data2
关于R Data.Table 多重赋值 IfElse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60894018/