假设我有以下数据
DT <- data.table(id = c(1,1,1,2,2,3,3),
bank=c("a","b","b","b","b","a","b"),
rate =c(2,3,4,1,0.5,7,3.2),
balance=c(10,5,11,3,20,0.5,2),
new=c(1,0,0,1,0,0,1),
before=c(1,0,1,1,0,1,0))
id bank rate balance new before
1: 1 a 2.0 10.0 1 1
2: 1 b 3.0 5.0 0 0
3: 1 b 4.0 11.0 0 1
4: 2 b 1.0 3.0 1 1
5: 2 b 0.5 20.0 0 0
6: 3 a 7.0 0.5 0 1
7: 3 b 3.2 2.0 1 0
我想向所有行添加一个列,其中包含各银行的平均新贷款率(new==1).我能做的最多的就是
aft <- DT[new==1,.(mrate=mean(rate)),by=bank]
aft <- merge(DT,aft, by="bank", all.x = T)
bank id rate balance new before mrate
1: a 1 2.0 10.0 1 1 2.0
2: a 3 7.0 0.5 0 1 2.0
3: b 1 3.0 5.0 0 0 2.1
4: b 1 4.0 11.0 0 1 2.1
5: b 2 1.0 3.0 1 1 2.1
6: b 2 0.5 20.0 0 0 2.1
7: b 3 3.2 2.0 1 0 2.1
有没有办法避免合并步骤.如有任何帮助,我们不胜感激.谢谢.