私はこのデータフレームdf1を持っています。私は次のように、インデックス列を更新したい前の行の値に基づいて列を更新する
User|Date|Index|
a |1 |1 |
a |1 |2 |
a |1 |3 |
a |1 |0 |
a |1 |5 |
a |1 |6 |
a |2 |0 |
b |4 |1 |
b |4 |2 |
b |4 |3 |
:
- グループのデータユーザー、日によって;
- 行が正しく順序付けられていると仮定します。
- 0の値を見つけたときに、列の索引を参照して1に更新し、次の行を修正して、前の行に基づいて1を増分して別の0が見つかるまで修正します。
これまでに絞り込んだことがありますが、私が望むことをやり遂げるためにどのように補完部品が完成するかはわかりません。
df1 %>%
group_by(User, Date) %>%
mutate(Index = replace(Index,)
誰でも助けてもらえますか?
編集: 上記のデータフレームは簡略化されています。これがコードです。
df1 <-structure(list(User = c(2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,3),
Date = c(16864, 16864, 16864, 16864, 16864, 16879, 16879,16879, 16879, 16879, 16879, 16879, 16879, 16879),
Index = c(16,17, 0, 19, 20, 1, 2, 3, 0, 5, 0, 0, 8, 9)),
class = "data.frame", .Names = c("User","Date", "Index"), row.names = c(NA, -14L))
これは、現在の外観です:
User|Date |Index|
2 |16864 |16 |
2 |16864 |17 |
2 |16864 |0 |
2 |16864 |19 |
2 |16864 |20 |
3 |16879 |1 |
3 |16879 |2 |
3 |16879 |3 |
3 |16879 |0 |
3 |16879 |5 |
3 |16879 |0 |
3 |16879 |0 |
3 |16879 |8 |
3 |16879 |9 |
所望の出力は次のようになります。
User|Date |Index|
2 |16864 |16 |
2 |16864 |17 |
2 |16864 |1 |
2 |16864 |2 |
2 |16864 |3 |
3 |16879 |1 |
3 |16879 |2 |
3 |16879 |3 |
3 |16879 |1 |
3 |16879 |2 |
3 |16879 |1 |
3 |16879 |1 |
3 |16879 |2 |
3 |16879 |3 |
予想外を表示できますか置く?また、[このリンクを見てください](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)と改訂 – Sotos
単純に置き換えない理由はありますか最初のステップとして1秒のゼロ?それらのすべてを置き換えている場合、なぜこれを繰り返し実行する必要があるのかわかりません。 – mkt
0の特別な理由はありません。私はすでに1として開始することができると思います。 – JessicaJones