Syntax: Wie erstelle ich eine Indexspalte nach ID?Hallo JMP-Community,
Ich versuche, eine Spalte zu erstellen, die Zeilen anhand einer ID-Spalte indiziert.
In anderen Skriptsprachen wird dies mit den folgenden Zeilen erreicht.
Nach ID: gen IDIndex = _n
Nach ID: gen IDCount = _N
Ich kann Folgendes tun, aber ich indiziere und zähle die gesamte Tabelle
New Column( "IDIndex", formula( Row() ) );
New Column( "IDCount", formula( N Row() ) );
Eine Beratung hierzu wäre super!
Sehr aufrichtig,
| AUSWEIS |
IDIndex |
IDCount |
|---|
| 444 |
1 |
4 |
| 444 |
2 |
4 |
| 444 |
3 |
4 |
| 444 |
4 |
4 |
| 333 |
1 |
3 |
| 333 |
2 |
3 |
| 333 |
3 |
3 |
Betreff: Syntax: Wie erstelle ich eine Indexspalte nach ID?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Danke MS, der von Ihnen geteilte Befehl funktioniert unabhängig von der Sortierung.
Ich wünsche ihnen einen wunderbaren Tag!
Betreff: Syntax: Wie erstelle ich eine Indexspalte nach ID?Ich denke, die folgende Formel funktioniert für IDIndex unabhängig von der anfänglichen Sortierung der ID-Spalte:
Summe( :ID[Index( 1, Row() )] == :ID )
Betreff: Syntax: Wie erstelle ich eine Indexspalte nach ID?Jeff hat Recht und ich möchte nur hinzufügen, dass die Formel für IDIndex von der vorherigen Sortierung abhängt.
Wenn die Tabelle später neu sortiert werden muss, müssen Sie die Auswertung unterdrücken oder löschen.
Spalte (dt, „IDIndex“) << eval unterdrücken (true);
oder:
Spalte (dt, „IDIndex“) << Formel löschen;
Um die Spalte IDCount ohne Sortierung zu erzeugen, können Sie die Option „Table Summery“ verwenden:
dt << Zusammenfassung (Gruppe ( :ID );
Ron
Betreff: Syntax: Wie erstelle ich eine Indexspalte nach ID?Super, das hat perfekt funktioniert!
Danke für die schnelle Antwort.
Ich wünsche ihnen einen wunderbaren Tag,
Matt
Betreff: Syntax: Wie erstelle ich eine Indexspalte nach ID?In Ihrer Formel müssen Sie den ID-Wert überprüfen, um festzustellen, ob er sich gegenüber der vorherigen Zeile geändert hat, und gegebenenfalls Ihren Index zurücksetzen.
Probieren Sie diese Formel aus:
If(:ID != Lag(:ID, 1) | Row() == 1, 1, Lag(:IDIndex, 1) + 1)
Ihre Spalte „ID-Anzahl“ muss IDIndex verwenden, um ihren Wert abzurufen:
Col Maximum( :IDIndex, :ID )
Das zweite Argument der Col Maximum-Funktion ist die By-Variable.
Ich hoffe das hilft!
-Jeff