これに似たデータセットがあります
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 番号 2 でわかるように、同じ ID の他のエントリを変更しないでください。
出力は次のようになります。
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
解決策もいいでしょう。
あなたの助けは大歓迎です!