に設定するIDという列を持つデータフレームdfがあります。 複数の行に同じIDが設定されている可能性があります。そのIDが以前に何回見られたかを示す列値「オカレンス」を設定します。データフレーム内の行のサブセットの列値をR
for (i in unique(df$ID)) {
rows = df[df$ID==i, ]
for (idx in 1:nrow(rows)) {
rows[idx,'occurrence'] = idx
}
}
残念ながら、これは行にオカレンス列を追加しますが、元のデータフレームを更新しません。 dfにオカレンス列を追加するにはどうすればよいですか?
更新:neilfwsによって指摘されたrow_number()関数はうまく機能します。実際には、私はフォローアップの質問があります:データフレームにも年の列があります。私がする必要があるのは、IDの前の発生の年に新しい列を追加することです(Prev.Year.For.This.IDなど) 。入力が
Year = c(1991,1991,1993,1994,1995)
ID = c(1,2,1,2,1)
df <- data.frame (Year, ID)
であれば例えば、私は、出力は次のようになりたいのですが:
ID Year occurrence Prev.Year.For.This.Id
1 1991 1 <NA>
2 1992 1 <NA>
1 1993 2 1991
2 1994 2 1992
1 1995 3 1993
これは再現可能にするためにサンプルデータを入力してください。 – www