people_id activity_id success totl_act success_rate cum_success cum_act cum_success_rate success_rate_trend
(fctr) (fctr) (int) (int) (dbl) (int) (int) (dbl) (dbl)
1 ppl_100 act2_1734928 0 1 0 0 1 0 NA
2 ppl_100 act2_2434093 0 1 0 0 2 0 0
3 ppl_100 act2_3404049 0 1 0 0 3 0 0
4 ppl_100 act2_3651215 0 1 0 0 4 0 0
5 ppl_100 act2_4109017 0 1 0 0 5 0 0
6 ppl_100 act2_898576 0 1 0 0 6 0 0
7 ppl_100002 act2_1233489 1 1 1 1 1 1 1
8 ppl_100002 act2_1623405 1 1 1 2 2 1 0
9 ppl_100003 act2_1111598 1 1 1 1 1 1 0
10 ppl_100003 act2_1177453 1 1 1 2 2 1 0
私はこのサンプルデータフレームを持っています。変数success_rate_trend
をcum_success_rate
変数を使って作成したいと思います。問題は、people_id
のすべての固有のアクティビティ(つまり、ユニークpeople_id
の成功傾向を取得したい)を除いて、すべてactivity_id
を計算することです。私は以下のコードを使用しています:For loop in Rは永遠に実行されます
success_rate_trend<-vector(mode="numeric", length=nrow(succ_rate_df)-1)
for(i in 2:nrow(succ_rate_df)){
if(succ_rate_df[i,1]!=succ_rate_df[i-1,1]){
success_rate_trend[i] = NA
}
else {
success_rate_trend[i]<-succ_rate_df[i,8]-succ_rate_df[i-1,8]
}}
実行には時間がかかります。私はsucc_rate_df
データフレームに百万行近くあります。コードを単純化して実行時間を短縮する方法を誰でも提案できます。
フィードバックに感謝します。 – Abhi