Wie berechnet man eine Übereinstimmung mit JSL?Hallo an alle!
In Excel können die Funktionen „=offset(,match(,,)-1,match(,,)-1,,)“ zum Berechnen verwendet werden, aber die Geschwindigkeit ist langsam, wenn die Daten groß sind.
Wie macht man das mit JSL? Vielen Dank!
Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Ja, Excel ist praktisch für die Verwendung von Arbeitsblattfunktionen innerhalb von 10.000 Zeilen.
Bei über 10.000 Zeilen bin ich es gewohnt, dies mit einem VBA-Wörterbuch zu tun. Aber Wörterbücher über 100.000 sind langsam.
Mit dieser JMP-Methode sind jetzt auch über 10 Millionen Zeilen schnell. Vielen Dank!Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Ich sehe keinen Nutzen für die JMP-Benutzergemeinschaft in der Aussage in Ihrer letzten Antwort.
" Es ist auch schnell, ein Wörterbuch in Excel zu verwenden … Set d = CreateObject("Scripting.Dictionary") "
Es scheint, dass ein solcher Kommentar im Excel-Diskussionsforum angemessener wäre
Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Vielen Dank für Ihre Hilfe.
Es ist auch schnell, ein Wörterbuch in Excel zu verwenden … Set d = CreateObject("Scripting.Dictionary")
aber mehr als eine Million Zeilen müssen anders gemacht werden.Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Hier sind einige Möglichkeiten, mit einer variablen Anzahl von Spalten zu stapeln. Wenn Sie heute match in Excel verwenden, wird wahrscheinlich eine der ersten beiden Methoden funktionieren:
//If the column positions do not change
d3_1 = d1 << Stack(
columns( Concat( [2 3], 4::10 )),
Source Label Column( "year" ),
Stacked Data Column( "data" ),
Drop all other columns( 1 ),
Keep( :state )
);
//If you want all columns
d1_clean = ( d1 << Subset( All rows, columns( 1::10 ) ) );
d3_2 = d1_clean << Stack(
columns( 2:: ncol(d1_clean) ),
Source Label Column( "year" ),
Stacked Data Column( "data" ),
Drop all other columns( 1 ),
Keep( :state )
);
//If the column names are in a specific format
// - get column names
cn = d1 << Get Column Names( string );
// - Find which columns match a format
// (jmp does have some patter matching tools but I like regex, check out regexr.com)
matches = repeat(0, N Items(cn));
for(c=1, c<= N Items(cn), c++, if(!is missing(Regex(cn[c], "^\d+$")), matches[c] = 1));
// - Stack
d3_3 = d1 << Stack(
columns( loc(matches) ),
Source Label Column( "year" ),
Stacked Data Column( "data" ),
Drop all other columns( 1 ),
Keep( :state )
);
Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Wenn es viele dieser Spalten gibt, beispielsweise mehr als 1000 … Nehmen wir an, es handelt sich um ein Datum.
Wie implementieren diese Spalten das D3-Tabellen-Setup in Form einer Variablenschleife? Vielen Dank!

Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Gute Arbeit! Danke!Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Da Ihnen die Geschwindigkeit bei großen Tabellen wichtig ist, können Sie eine „Nachschlagetabelle“ in einem langen Format erstellen, sodass pro Wert eine Zeile vorhanden ist, und diese dann mit „Join“ oder „Update“ für die Suche verwenden.So könnte das aussehen:
Names default to here( 1 );
d1 = Open( "$SAMPLE_DATA/Presidential Elections.jmp" );
d2 = New Table( "offset",
Add Rows( 8 ),
New Column( "State",
Character,
"Nominal",
Set Values(
{"Wyoming", "Montana", "Montana", "Alaska", "Wisconsin", "Nebraska", "Nevada", "Montana"}
)
),
New Column( "year",
Character,
"Ordinal",
Set Values( {"1988", "1988", "1988", "1992", "2000", "1992", "2004", "1980"} )
),
New Column( "data",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ))
);
//Move data to a long format
d3 = d1 << Stack(
columns(
:Name( "1980" ),
:Name( "1984" ),
:Name( "1988" ),
:Name( "1992" ),
:Name( "1996" ),
:Name( "2000" ),
:Name( "2004" ),
:Name( "2008" ),
:Name( "2012" )
),
Source Label Column( "year" ),
Stacked Data Column( "data" )
);
d3 << Set Name( "Long format" );
d3:year << Set Modeling Type("Ordinal");
//'Lookup' the values:
d2 << Update( with(d3), Match Columns( :state=:state, :year=:year ), Add Columns from Update table( None ));
d3 << Close window;
Betreff: Wie berechnet man eine Übereinstimmung mit JSL?Berechnen Sie den Wert von „Daten“ in der Tabelle „Offset“ basierend auf den Daten in der Tabelle „Präsidentschaftswahlen“.
Danke schön!Betreff: Wie berechnet man eine Übereinstimmung mit JSL?d1 = Open( "$SAMPLE_DATA/Presidential Elections.jmp" );
d2 = Neue Tabelle( "offset",
Zeilen hinzufügen( 8 ),
Neue Spalte( „State“,
Charakter,
„Nominal“,
Werte festlegen(
{"Wyoming", "Montana", "Montana", "Alaska", "Wisconsin", "Nebraska", "Nevada", "Montana"}
)
),
Neue Spalte( „Jahr“,
Charakter,
„Nominal“,
Werte festlegen( {"1988", "1988", "1988", "1992", "2000", "1992", "2004", "1980"} )
),
Neue Spalte( „Daten“, Zeichen, „Nominal“, ),
);