Wie werden Daten in eine Standardspaltenliste eingepasst?Ich habe eine Reihe von Standardspalten, die ich für mehrere Datentabellen verwenden möchte. Das Problem ist, dass einige Datentabellen möglicherweise nicht ALLE dieser Spalten enthalten.
Wie kann ich einfach:
1. Erstellen Sie eine Datentabelle mit dieser Standardliste von Spalten (z. B. ES1, ES2, ES3, ES4, ES5).
2. Eine Datentabelle lesen, die einen Teil der obigen Spalten enthalten kann (Beispiel: ES1, ES3)
| | ES1 | ES3 |
| Zählzeile 1 | 2 | 4 |
| Zählzeile 2 | 2 | 10 |
3. Erstellen Sie die Datentabelle der Anzahl der Datentabellen Nr. 2 mit der vollständigen Liste der Standardspalten:
| | ES1 | ES2 | ES3 | ES4 | ES5 |
| Zählzeile 1 | 2 | 0 | 4 | 0 | 0 |
| Zählzeile 2 | 2 | 0 | 10 | 0 | 0 |
Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Hier sind ein paar Möglichkeiten, dies zu tun
Names Default To Here( 1 );
dt1 = Data Table( "Your first table" );
dt2 = Data Table( "Your second table" );
dt1 << concatenate( dt2 );
Names Default To Here( 1 );
StdNamesList = {"PQrz", "acgh","bddxy","abcd"};
ExistingColNames = dt << get column names;
dt2 = Data Table( "Your second table" );
// If a std name exits in the data table, eliminate it from this working copy of the
// translate data table
For(i=1,i<=ncols(dt),i++,
If(contains(StdNamesList,ExistingColNames[i])
stdNamesList = remove( stdNamesList,contains(StdNamesList,ExistingColNames[i], 1))
)
);
// Add in the missing columns
For(i=1,i<=ncols(dt),i++,
dt2 << New Column(StdNamesList[i],set each value(0));
);Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Hallo Jim,
Die Verkettung scheint nicht die Werte gemeinsamer Zeilen zu summieren, z. B. für NDP1007 würde ich davon ausgehen, dass der Wert von ES3 jetzt 7 ist (die Gesamtsumme von Blatt 1, Blatt 1 2).
Gibt es einen Weg, auf dem ich das tun kann?
Mit freundlichen Grüßen,
Zach

Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Überlegen Sie, wie Sie zwei separate Tabellen wie oben angegeben zusammenfassen können?
Mit freundlichen Grüßen,
ZachBetreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Angesichts Ihrer neuen Spezifikation wird das Problem etwas komplexer. In JMP ist keine Summierungsfunktion integriert. Es gibt so viele verschiedene Aktionen, die mit dem Zusammenfügen von Daten ausgeführt werden können, dass die Summierung nicht als Standardeinstellung festgelegt ist. Das einfache Skript unten führt die gewünschte Summierung durch. Der größte Teil des angezeigten Codes dient nur zum Erstellen der Beispieldatentabellen. Nur der Code in den Zeilen 32-59 erledigt die Zusammenstellung der Daten.
Names Default To Here( 1 );
// Create the sample data tables
dt = New Table( "Primary",
Add Rows( 3 ),
New Column( "Column 1",
Character,
"Nominal",
Set Selected,
Set Values( {"NDP1007", "NDP2024", "NDP3030"} )
),
New Column( "ES1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 2, 1] ) ),
New Column( "ES2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [5, 0, 1] ) ),
New Column( "ES3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [5, 0, 2] ),
Set Display Width( 46 )
),
New Column( "ES4", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [3, 1, 3] ) ),
New Column( "ES5", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [0, 2, 3] ) ),
Set Row States( [0, 1, 0] )
);
dt2 = New Table( "Secondary",
Add Rows( 2 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"NDP1007", "NDP2024"} ) ),
New Column( "ES1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 0] ) ),
New Column( "ES3", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 3] ) )
);
// Change the names in the Secondary data table so after joining they can be summed together
// and create a list of the new names
newColNameList = {};
For( i = 2, i <= N Cols( dt2 ), i++,
Column( dt2, i ) << set name( (Column( dt2, i ) << get name) || "_X" );
Insert Into( NewColNameList, Column( dt2, i ) << get name );
);
// Update the primary data table with the secondary table
dt << Update( With( dt2 ), Match Columns( :Column 1 = :Column 1 ) );
// Create the code to add the data together that needs to be summed
For( col = 1, col <= N Items( newColNameList ), col++,
// Make sure the standard name is in the data table and if so, add
// the values together
If( Try( Column( dt, Word( -2, newColNameList[col], "_" ) ) << get name ) != "",
For( theRow = 1, theRow <= N Rows( dt ), theRow++,
Column( dt, Word( -2, newColNameList[col], "_" ) )[theRow] = Sum(
Column( dt, Word( -2, newColNameList[col], "_" ) )[theRow],
Column( dt, newColNameList[col] )[theRow]
)
)
)
);
// Delete the Secondary column no longer needed
dt << delete columns( newColNameList );Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst? @ zjuv007 ,
Jim, @txnelson , versah Sie mit den Schlüsseln, um Ihre Tabellen zu verbinden. Der letzte Schritt, um die Summe der gemeinsamen Datensätze zu erhalten, besteht darin, eine Tabellensumme auszuführen.
Das folgende Skript baut auf Jims erster Lösung auf und geht davon aus, dass Sie die Summe () aller numerischen Spalten wollen. Möglicherweise möchten Sie numclist ändern, um eine Liste möglicher Spalten zu erhalten, wie in Jims zweitem Skript gezeigt. Das Skript und die Datentabellen sheet1 und sheet2 sind beigefügt.
Names Default To Here( 1 );
dt1 = Data Table( "sheet1" );
dt2 = Data Table( "sheet2" );
dt3 = dt1 << concatenate( dt2 );
numclist = dt1 << Get Column Names(Numeric, String);
sumXP = Expr(Summary(
Group( :Column 1 ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 ),
Output Table Name ("Summed Table")
) );
for(i=1, i<=nitems(numclist), i++,
Insert Into(sumXP, EvalExpr(Sum(Column(Expr(numclist[i])))))
);
show(NameExpr(sumXP) );
Eval (EvalExpr(dt3 << expr(sumXP) ) );
dt = Data Table( "Summed Table" );
//option
dt << delete column( {"N Rows"});

Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Gibt es eine einfache Möglichkeit, Sum2Tables.jsl zu reparieren, um dies durchzuführen, wenn ich dies auf das Summieren über N Tabellen erweitern möchte? (In den meisten Fällen würde ich es auf N = 5 beschränken).
Freundliche Grüße, das hat funktioniert!Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?WENN ich einfach nur eine Standardliste dieser Spalten generieren möchte, in Fällen, in denen die erste von mir aufgerufene Tabelle nicht alle entsprechenden Spalten enthält ... Kann ich das zuerst tun, dann einfach ausfüllen und als Nullen zählen, wenn in dieser bestimmten Summenspalte keine Anzahl vorhanden ist?Betreff: Wie werden Daten in eine Standardspaltenliste eingepasst?Bevor Sie solche Follow-on-Fragen stellen, müssen Sie die gelieferte Antwort studieren, damit Sie verstehen, wie es funktioniert. Wenn Sie die Aussage verstehen
dt3 = dt1 << concatenate( dt2 );
Wenn Sie im Skripthandbuch oder im Skriptindex nachschlagen, können Sie beliebig viele Datentabellen in einer Anweisung zusammenfügen.
In Bezug auf Ihre zweite Frage, ändern Sie die Zeile
numclist = dt1 << Get Column Names(Numeric, String);
zu
numclist = dt3 << Get Column Names(Numeric, String);
Sie erhalten eine vollständige Liste aller in allen Datentabellen gefundenen Spalten. Die Verwendung dieser kombinierten Liste könnte die Antwort sein, die Sie benötigen