次のようなデータフレームがあります。
inter_cv_vars <- data.frame(
I_Org_ZB1 = rep(0:1,each = 2, len = 20),
I_Org_ZB2 = rep(0:1,each = 1, len = 20),
I_Org_ZB3 = rep(0:1,each = 3, len = 20),
I_Org_ZB4 = rep(0:1,each = 4, len = 20),
I_Org_ZB5 = rep(0:1,each = 5, len = 20),
I_Org_ZB6 = rep(0:1,each = 1, len = 20),
I_Org_ZB7 = rep(0:1,each = 3, len = 20),
I_Org_ZB8 = rep(0:1,each = 2, len = 20),
I_Org_ZB9 = rep(0:1,each = 4, len = 20),
I_Org_ZB10 = rep(0:1,each = 6, len = 20),
I_Org_ZB11 = rep(0:1,each = 2, len = 20),
I_Org_ZB12 = rep(0:1,each = 1, len = 20))
O_ZERO_BILLING_CNT_TRL_Y1
次の条件に基づいて、このデータフレームに新しい列 " " を作成したいと考えています。
列 " " から始まる連続した "1" 値の合計。I_Org_ZB1
シーケンスが壊れている場合、列 " O_ZERO_BILLING_CNT_TRL_Y1
" の値は、連続した "1" 値が発生するまでのシーケンスになります。
例:- の値I_Org_ZB1 I_Org_ZB2 I_Org_ZB3
が 1,1,1 n で他のすべての値がゼロの場合、列 " O_ZERO_BILLING_CNT_TRL_Y1
" の値は 3 になりますが、値が 1,0,1 で他のすべての列が 0 の場合、" O_ZERO_BILLING_CNT_TRL_Y1
"の値は次のようになります。 1 になります。特定の行ですべての値が 1 の場合、列の値は 12 になります。
以下のコードを試しました:
for (i in 1:12){
if(i == 12)
{next}
ifelse(inter_cv_vars$I_Org_ZB1 == 1,
inter_cv_vars$O_ZERO_BILLING_CNT_TRL_Y1 <- ifelse(
rowSums(inter_cv_vars[,1:eval(parse(text=sprintf("(12-%s+1)",i)))]) == eval(parse(text=sprintf("(12-%s+1)",i))),
eval(parse(text=sprintf("(12-%s+1)",i))),0),
0)
}
しかし、間違った答えを得た場合、誰かが私が犯した間違いを指摘したり、他の代替手段を提供したりできます.
よろしくお願いします:)
よろしく、
アミット