1

これに似たデータセットがあります

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解決策もいいでしょう。

あなたの助けは大歓迎です!

4

1 に答える 1