问题:如何在发生某个值之前向后填充组中的所有行。我不是想用zoo
na.locf
填写NA或缺失值。在下面,我想在每个ID组出现1.00之前使用1.00填充A中的所有先前行,理想情况下使用dplyr
。按发生次数向组填充值
输入:
data<- data.frame(ID=c(1,1,1,1,2,2,2,3,3,3,4,4,4,4,4),
time=c(1,2,3,4,1,2,3,1,2,3,1,2,3,4,5),
A=c(0.10,0.25,1,0,0.25,1,0.25,0,1,0.10,1,0.10,0.10,0.10,0.05))
ID time A
1 1 0.10
1 2 0.25
1 3 1.00
1 4 0.00
2 1 0.25
2 2 1.00
2 3 0.25
3 1 0.00
3 2 1.00
3 3 0.10
4 1 1.00
4 2 0.10
4 3 0.10
4 4 0.10
4 5 0.05
所需的输出:
ID time A
1 1 1.00
1 2 1.00
1 3 1.00
1 4 0.00
2 1 1.00
2 2 1.00
2 3 0.25
3 1 1.00
3 2 1.00
3 3 0.10
4 1 1.00
4 2 0.10
4 3 0.10
4 4 0.10
4 5 0.05
@docendodiscimus感谢的人,你是对的。我应该更加小心..我认为这将是'setDT(data)[data [,.I [cumsum(A == 1)<1],ID] $ V1,A:= 1]' – akrun