Können wir „for-Schleife“ in der Spaltenformel verwenden?Hallo alle,
Gibt es eine Möglichkeit, diese beiden Vorgänge (Erstellen neuer Spalten und anschließendes Ausführen einer ForLoop) zu einem einzigen zu kombinieren?
Ich habe Kunden-IDs in einer Spalte wiederholt und dann ändert sich das irgendwann und die zweite ID wiederholt sich immer wieder und dann die dritte und so weiter. Ich möchte eine neue Spalte erstellen, sagen wir, Unq_Id und ihre Werte sollten leer sein, bis sich Customer_Id ändert. Ich kann dies im folgenden Skript tun, aber ich frage mich, ob es einen besseren Weg gibt, es zu tun? Das bedeutet – eine Schleife innerhalb der Spaltenformel ausführen oder etwas Ähnliches!
dt << New Column( “Unq_ID”, Numeric, Continuous, Set Each Value() );
dt << Sort( by( :Customer_ID ), Order( Ascending ), Replace Table( 1 ) );
For( i = 1, i <= N Rows( dt ), i++,
If(
:Customer_ID[i] == :Customer_ID[i + 1]
,
:Unq_ID[i] = :Customer_ID[i]
)
);
Irgendein Vorschlag?
Danke, Hari
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungVerbraucher- und MarktforschungInhaltsorganisationDatenzugriffMassenanpassungQualitäts- und VerfahrenstechnikBetreff: Können wir „for-Schleife“ in der Spaltenformel verwenden?Ja, ich habe nach der zweiten Lösungsart gesucht.
Danke.
Betreff: Können wir „for-Schleife“ in der Spaltenformel verwenden?Hier sind einige Möglichkeiten, die gewünschte Spalte zu erstellen

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;
)
);
Betreff: Können wir „for-Schleife“ in der Spaltenformel verwenden?Hallo Nelson, ich habe darüber nachgedacht, aber es ist nicht das, wonach ich suche.
Das von Ihnen bereitgestellte Skript gibt mir etwas wie das Folgende. Und der, den ich suche, befindet sich im roten Dreieck.

Anstatt c1, c2 ... zu setzen, setzen wir auch 1, 2, 3 ... eine Art Zähler, der um 1 erhöht wird, sobald sich etwas ändert.
Irgendeine Hilfe?
Betreff: Können wir „for-Schleife“ in der Spaltenformel verwenden?Hier ist eine Möglichkeit, dies zu tun

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];
);