Wie funktionieren Operationen mit zwei separaten Datentabellen?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Zum Beispiel, wenn ich teilen möchte jeder Wert von Spalte 1 aus Datentabelle 1 durch jeder Wert von Spalte 2 aus Datentabelle 2 . Ich scheine dabei Probleme zu haben und frage mich, warum dieser Fehler auftaucht "Zugriff auf bereichsbezogene Datentabellen erfordert eine Datentabellenspalte oder -variable{1} im Zugriff oder in der Auswertung von 'dtbinsum:column' , dtbinsum:column/*### */(Zahlen ) /*##****/"
Der Teil meines Skripts sieht so aus:
//Beginn des Skripts
dt = aktuelle Datentabelle ();
dtbinsum = dt << Zusammenfassung(
Gruppe( :Datendatei, :Chargen-ID, :SBIN ),
Freq( "Keine" ),
Gewicht ("Keine"),
Format des Statistikspaltennamens ("Spalte"),
Link zur ursprünglichen Datentabelle ( 0 )
);
dtbinsum<< Wählen Sie Where( dtbinsum:sbin != 1 );
dtbinsum<< Zeilen löschen;
dtbinsum2 = dt << Zusammenfassung(
Gruppe ( : Chargen-ID ),
N(:SBIN),
Freq( "Keine" ),
Gewicht( "Keine" )
);
Ertrag = {};
for(i=0, i
yield_temp = (dtbinsum:column(Nrows ))/(dtbinsum2:column(N(SBIN) ));
Einfügen in (Ertrag, Ertrag_temp);
);
Zeigen (Ertrag);
//Ende des Skripts
Ich weiß, dass mein Weg wahrscheinlich nicht der effizienteste Weg ist, ganz zu schweigen von dem Fehler, der angezeigt wird, aber hat jemand eine Lösung dafür?
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?So weit bin ich gekommen, bevor ich den folgenden Fehler erhalten habe:
Name nicht aufgelöst: bei Zugriff oder Auswertung von " , Name(" ")/*###*/
Code:
dt1 = Datentabelle ( "Haupttisch" ) ;
dt2 = Datentabelle ( "REF-Tabelle aufgeteilt" ) ;
Spalten = dt1 << Spaltennamen erhalten ( Schnur ) ;
zum ( ich = 2 , ich <= N Spalten ( dt1 ) , ich ++,
eine_Spalte = Spalten [ ich ] ;
Wert = ( Spalte ( dt1 , eine_Spalte ) << getValues )
( Spalte ( dt2 , eine_Spalte ) << getValues ) ;
dt1 << NeueSpalte ( eine_Spalte , Numerisch , Werte ( Wert )) ;
) ;
Das Skript schafft es, die Schleife einmal zu drehen, wodurch eine Spalte mit korrekten Werten erstellt wird.
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?Können Sie mir Vorschläge machen, wie ich Ihre Formel so ändere, dass sie in einer for-Schleife funktioniert?
Es sollte dasselbe tun wie Ihr Skript, aber für alle Spalten sollte der Name für die neue Tabelle die Überschrift von Spalte aquiered + sein Quotient
dt1 = Datentabelle ("Haupttabelle");
dt2 = Datentabelle ("Ref-Tabelle");
Spalten = dt << Spaltennamen erhalten ( Schnur ) ;
for ( i = 2, i <= N Spalten (myTable), i++,
// Ich habe verschiedene Versionen eines Verweises auf die Spalten in meiner Haupttabelle ausprobiert, aber ich bekomme es nicht zum Laufen
Wert = ( Spalte ( dt1 , Spalte (i) ) << getValues )
( Spalte ( dt2 , Spalte (d ) ) << getValues ) ;
dt1 << NeueSpalte (Spalte , Numerisch , Kontinuierlich , Werte ( Wert )) ;
);
BR
Anders
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?Danke Ian, jetzt, wo du darauf hingewiesen hast, dass seine elementweisen Operationen jetzt sehr sinnvoll sind.
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?( Spalte ( dt1 , "Zähler" ) << getValues ) fügt die Werte aus der angegebenen Spalte in einen Zeilenvektor ein (der im Beispiel mit v1 identisch ist). ( Spalte ( dt2 , "Nenner" ) << getValues ) macht dasselbe mit der anderen Spalte (die eigentlich derselbe Zeilenvektor wie v2 ist). Dann ist die
-Operator verlangt eine elementweise Division, d. h. das erste Element des ersten Vektors wird durch das erste Element des zweiten Vektors dividiert, um das erste Element des Ergebnisvektors zu erhalten (und so weiter für die anderen Elemente).
Werfen Sie einen Blick auf den Abschnitt „Matrizen“ in Kapitel 7 von „Hilfe > Bücher > Skriptleitfaden“.
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?Danke Ian, es funktioniert für mich, aber kann ich dich speziell nach dieser Zeile fragen?
Wert = ( Spalte ( dt1 , "Zähler" ) << getValues )
( Spalte ( dt2 , "Nenner" ) << getValues ) ;
^
Die Art und Weise, wie ich JSL verstehe, ist, dass Doppelpunkte helfen, Spalten zu identifizieren, wenn sie so verwendet werden, wie funktioniert es?
Betreff: Wie funktionieren Operationen mit zwei separaten Datentabellen?So etwas vielleicht:
NamesDefaultToHere ( 1 ) ;
// Erstellen Sie ein paar Tabellen
v1 = J ( 10 , 1 , Zufällige Ganzzahl ( 1 , 5 )) ;
v2 = J ( 10 , 1 , Zufällige Ganzzahl ( 1 , 5 )) ;
dt1 = NeueTabelle ( "Tabelle 1" , NeueSpalte ( "Zähler" , Numerisch , Ordinal , Werte ( v1 ))) ;
dt2 = NeueTabelle ( "Tabelle 2" , NeueSpalte ( "Nenner" , Numerisch , Ordinal , Werte ( v2 ))) ;
// Eine Quotientenspalte zu Tabelle 1 hinzufügen
Warte ab ( 3 ) ;
Wert = ( Spalte ( dt1 , "Zähler" ) << getValues )
( Spalte ( dt2 , "Nenner" ) << getValues ) ;
dt1 << NeueSpalte ( "Quotient" , Numerisch , Kontinuierlich , Werte ( Wert )) ;