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
에 대한 첫 번째 활동을 제외하고 모든 activity_id
에 대해 계산하기를 원합니다. 즉 고유 한 성공 추세를 포착하고자합니다. people_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