列の数式で「forループ」を使用できますか?こんにちは、みんな、
これらの2つの操作(新しい列を作成してからForLoopを実行する)を1つの操作に組み合わせる方法はありますか?
列で顧客IDを繰り返しましたが、ある時点で変更され、2番目のIDが繰り返され続け、次に3番目のIDが繰り返されます。 Unq_Idとその値は、Customer_Idが変更されるまで空である必要があるという新しい列を作成したいと思います。 以下のスクリプトでこれを行うことができますが、それを行うためのより良い方法があるかどうか疑問に思っていますか? これは、列式内でループを実行すること、または同様のことを意味します。
dt << New Column(“ Unq_ID”、Numeric、Continuous、Set Each Value());
dt << Sort(by(:Customer_ID)、Order(Ascending)、Replace Table(1));
(i = 1、i <= N Rows(dt)、i ++、
もしも(
:Customer_ID [i] ==:Customer_ID [i + 1] 、: Unq_ID [i] =:Customer_ID [i]
)。
);
なにか提案を?
ありがとう、ハリ
スクリプティングRe:列数式で「forループ」を使用できますか?これがそれを行う1つの方法です

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID",
character,
values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} )
)
);
For( i = 1, i <= N Rows( dt ), i++,
If( i == 1,
dt << New Column( Char( :Customer_ID[i] ), character );
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
,
If( :Customer_ID[i] != :Customer_ID[i - 1],
dt << New Column( Char( :Customer_ID[i] ), character )
)
);
Column( dt, :Customer_ID[i] )[i] = :Customer_ID[i];
);
Re:列数式で「forループ」を使用できますか?こんにちはネルソン、私はそれについてですが、それは私が探しているものではありません。
あなたが提供したスクリプトは私に以下のようなものを与えています。 そして、私が探しているのは赤いトリングルの中にあります。

また、c1、c2 ....を置くのではなく、1、2、3 ...のようなカウンターを置く方法で、変更があるとすぐに1ずつ増えます。
何か助けはありますか?
Re:列数式で「forループ」を使用できますか?必要な列を作成する方法はいくつかあります

Names Default To Here( 1 );
dt = New Table( "custIDs",
New Column( "Customer_ID", character, values( {"c1", "c1", "c1", "c2", "c2", "c3", "c3", "c3"} ) )
);
dt << New Column( "Or like this" );
counter = 0;
For( i = 1, i <= N Rows( dt ), i++,
If(
i == N Rows( dt ),
counter++;
:or like this[i] = counter;,
:Customer_ID[i] != :Customer_ID[i + 1],
counter++;
:or like this[i] = counter;
)
);
// or
dt << New Column( "or like this using formula",
formula(
x = .;
If( Row() == 1, counter = 0 );
If( :Customer_ID != Lag( :Customer_ID, -1 ) | Row() == N Rows( Current Data Table() ),
counter++;
x = counter;
);
x;
)
);
Re:列数式で「forループ」を使用できますか?はい、私は2番目のタイプのソリューションを探していました。
ありがとう。