我有一个与这个相似的数据集
df1<-data.frame(ID = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
YEAR = c(1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002),
VALUE = c(1,2,3,3,3,2,5,6,2,3,4,4,2,1,2,1))
ID YEAR VALUE
1 1 1999 1
2 1 2000 2
3 1 2001 3
4 1 2002 4
5 2 1999 3
6 2 2000 2
7 2 2001 5
8 2 2002 6
9 3 1999 2
10 3 2000 3
11 3 2001 4
12 3 2002 4
13 4 1999 2
14 4 2000 1
15 4 2001 2
16 4 2002 1
我想要的是,如果第一次 Value 小于 3,则前几年具有相同 ID 的行中的值应设置为 NA ,否则保持不变。但是,如果在值 2 或更低之前存在大于或等于 3 的值,则不应更改相同 ID 的其他条目,如 ID 号 2 所示。
输出应如下所示:
df2<-data.frame(ID = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
YEAR = c(1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002, 1999, 2000, 2001, 2002),
VALUE = c(0,0,3,3,3,2,5,6,0,3,4,4,0,0,0,0))
ID YEAR VALUE
1 1 1999 0
2 1 2000 0
3 1 2001 3
4 1 2002 4
5 2 1999 3
6 2 2000 2
7 2 2001 5
8 2 2002 6
9 3 1999 0
10 3 2000 3
11 3 2001 4
12 3 2002 4
13 4 1999 0
14 4 2000 0
15 4 2001 0
16 4 2002 0
一个data.table
解决方案也可以。
您的帮助将不胜感激!