0
私は以前、別の変数の変更ごとに値がインクリメントされたベクトルを返すことができる非常に便利なr
関数を使用しました。私はその遅れ値でbit
を比較するソリューションを持っているbit.change
ベクトルの値の変更を確認する
Day bit bit.change
2016-10-01 1 1
2016-10-02 0 2
2016-10-03 0 2
2016-10-04 1 3
2016-10-05 1 3
2016-10-06 0 4
2016-10-07 1 5
2016-10-08 1 5
2016-10-09 1 5
2016-10-10 1 5
余分な列が必要になります
set.seed(0) data.frame(Day=seq(as.Date("2016-10-01"),as.Date("2016-10-10"),by="day"), bit=sample(c(0,1),size=10,replace=TRUE))
Day bit
2016-10-01 1
2016-10-02 0
2016-10-03 0
2016-10-04 1
2016-10-05 1
2016-10-06 0
2016-10-07 1
2016-10-08 1
2016-10-09 1
2016-10-10 1
: は、ここに以下のコードを生成し、私の入力data.frame
だろうそれはエレガントではありません。 誰かが何を意味するのか分かりませんか? 可能であれば、dplyr::mutate()
とdplyr::group_by()
で動作するはずです。 group_by()
が指定されている場合は、新しいグループごとにbit.change
が1
から再び開始されます。 Thxあなたの助けにたくさん!
このような実装では、 'data.table'の' rleid() 'を参照してください。私はこれが重複した質問だと確信していますが、 'cumsum(abs(c(1、diff(df $ bit))))')も基底Rで行います。 – thelatemail
Thx。 'rleid()'は私が探していたものでした。 Thxは 'cumsum()'の代替提案にも – Vincent