Mindestwert einer Spalte zuweisenHallo Leute,
Ich habe 2 Dateien.
1. Datei:

2. Datei:

Ich versuche, ein Skript zu schreiben, das nach dem Mindestalter aus der 1. Datei sucht und das niedrigste Alter in der 2. Datei zuweist
Für zB
Die 1. Reihe mit drei Namen Sam, John, Smith so sollte der Wert in der Spalte Mindestalter sein Min{Sam, John, Smith} Min{21, 27, 32} = 21
Meine endgültige Ausgabe sieht in etwa so aus:

Irgendwelche Vorschläge bitte?
Vielen Dank
SkripterstellungBetreff: Einer Spalte den Mindestwert zuweisenDie Column()-Funktion ist es nicht
d2:Column(2)[I]
es ist wie angegeben
Column( dt, 2 )[I]
Und wenn die Indizes Variablen wären, wäre das fertige Skript
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
indexd2minage = 2;
indexd2name = 1;
indexd1name = 1;
indexd1age = 2;
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
Column( dt2, indexd2minage )[i] =
Col Min(
If(
Contains(
Column( dt2, indexd2Name )[i],
as Column( dt1, indexd1Name )
),
Column( dt1, indexd1age ),
.
)
)
);Betreff: Einer Spalte den Mindestwert zuweisenHi @txnelson ,
Ich habe versucht, den Spaltennamen durch den Spaltenindex zu ersetzen, aber es wird nicht ausgeführt
Irgendwelche Vorschläge?
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Column(2)[i] =col min(If(contains(dt2:Column(1)[i],dt1:Column(1)),dt1:Column(2),.));
);
Betreff: Einer Spalte den Mindestwert zuweisenIch meine, in diesem Skript wird der Spaltenname durch den Spaltenindex ersetzt
Names Default To Here( 1 );
dt1 = Data Table( "1st" );
dt2 = Data Table( "2nd file" );
Current Data Table( dt1 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt1:Name ), dt1:age, . ) )
);
Betreff: Einer Spalte den Mindestwert zuweisenHier ist eines der Beispiele, die ich gegeben habe
Column( "Age" ) << Get Property( "Units" );
Wenn Sie die Dokumentation zur Column()-Funktion in der JSL-Syntaxreferenz untersuchen, lautet sie
Column(<dt>, "name", "formatted")
Column(<dt>, n)
Description
Gets a reference to the data table column.
Arguments
dt Optional reference to a data table. If this is not supplied, the current data table is used.
name Quoted string that is the name of the column.
formatted Quoted string that returns the formatted string of the cell value.
n Column number.
Wenn Sie das Beispiel aus dem Syntax Guide lesen, lautet es:
The Column function can also identify a column. For Big Class.jmp, the following expressions
all refer to age, the second column in the table:
Column( "age" );
Column( 2 );
Column( dt, 2 );
Column( dt, "age" );
Betreff: Einer Spalte den Mindestwert zuweisenHi @txnelson ,
Wie kann ich im obigen Skript den Spaltenindex anstelle des Spaltennamens definieren?
Vielen Dank
Betreff: Einer Spalte den Mindestwert zuweisenDie Syntax für get property ist
obj << Get Property( the property you want to retrive );
Daher würden Sie nach einer der Spalteneigenschaften für die Spalte Alter fragen:
:Age << Get Property( "Spec Limits" );
// or
Column( "Age" ) << Get Property( "Units" );
Und JMP ermöglicht es einem, seine eigenen Spalteneigenschaften zu erstellen, also könnte man so etwas tun
dt1:Sam << Set Property("Age", 3);
dt1:Andy << Set Property("Age", 4);<BR />theAge = dt1:Andy << Get Property( "Age" );
Betreff: Einer Spalte den Mindestwert zuweisenHi @txnelson ,
Danke für die schnelle Antwort.
Ich habe meine Frage nicht präzisiert.
1.In der Datentabelle 1st_file haben Sie 9 Spalten Ja
2. In der Datentabelle 1st_file haben Sie 1 Datenzeile für jede Spalte.
Wenn Sie mit der rechten Maustaste auf eine Spaltenüberschrift klicken und "Spalteneigenschaften" auswählen, sehen Sie eine umfangreiche Liste von Elementen, die sich auf die bestimmte Spalte beziehen, die Sie ausgewählt haben.
Kann ich diese umfangreichen Listenwerte in die Spalte von 2nd_file importieren?
Können wir die Syntax verwenden " Eigenschaft abrufen () "
Für zB .
dt1 << Eigenschaft abrufen("Alter");
und dann for-Schleife verwenden, um es in der 2. Datei zuzuweisen?
Danke noch einmal
Betreff: Einer Spalte den Mindestwert zuweisenZunächst muss ich einige Begrifflichkeiten klären.
- In der Datentabelle 1st_file haben Sie 9 Spalten
- In der Datentabelle 1st_file haben Sie 1 Datenzeile für jede Spalte.Sie haben nicht das, was JMP als Spalteneigenschaften bezeichnet.Wenn Sie mit der rechten Maustaste auf eine Spaltenüberschrift klicken und "Spalteneigenschaften" auswählen, sehen Sie eine umfangreiche Liste von Elementen, die sich auf die bestimmte Spalte beziehen, die Sie ausgewählt haben.
Ich erwähne das Obige nur, weil ich bei der Verwendung der Schlüsselwörter Column Property sofort auf die Idee von JMP Column Properties gekommen bin.Das führte zu einer Reihe falscher Annahmen, die bei mir zu einer Reihe von Verwirrung führten.
Abgesehen davon sind hier ein paar der vielen Möglichkeiten, wie Sie Ihr Problem lösen können
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
// Transpose the data into a standard data table format
dt3 = dt1 << Transpose(
invisible,
columns( :Sam, :Andy, :John, :Ed, :Jonny, :Smith, :Scott, :George, :Mathew ),
Output Table( "Transpose of 1st_file" )
);
Current Data Table( dt3 );
For( i = 1, i <= N Rows( dt2 ), i++,
dt2:Minimum Age[i] = Col Min( If( Contains( dt2:Name[i], dt3:Label ), dt3:Name( "Row 1" ), . ) );
Show( dt2:minimum Age[i] );
);
Close( dt3, nosave );
Nehmen Sie sich etwas mehr Zeit für die Verarbeitung der Daten, aber eine sekundäre Tabellenerstellung ist nicht erforderlich.
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Minimum Age" );
For( i = 1, i <= N Rows( dt2 ), i++,
ages = {};
For( k = 1, k <= N Cols( dt1 ), k++,
If( Contains( dt2:Name[i], (Column( dt1, k ) << get name) ) > 0,
Insert Into( ages, Column( dt1, k )[1] )
);
);
dt2:Minimum Age[i] = Min( ages );
);Betreff: Einer Spalte den Mindestwert zuweisenHi @txnelson ,
Was passiert, wenn die Alterswerte in Spalteneigenschaften gespeichert werden? Wie kann ich Spalteneigenschaften (Alter) von 1st_file in die Spalte (Mindestalter) von 2nd file importieren

Betreff: Einer Spalte den Mindestwert zuweisenWas hat Sie daran gehindert, das Beispiel von " Hinzufügen neuer Spalten zu einer Datentabelle " und fügen Sie es Ihrem Skript hinzu?
Wussten Sie, dass Sie im Skriptleitfaden nach Beispielen für die Vorgehensweise suchen können?Wenn nicht, empfehle ich Ihnen dringend, sich damit vertraut zu machen.
Hier ist das Beispielskript, das ich Ihnen gegeben habe, mit dem neuen Befehl zum Hinzufügen der neuen Spalte
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
dt2 << New Column( "Minimum Age" );
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Betreff: Einer Spalte den Mindestwert zuweisenHi @txnelson ,
Danke für Ihre Hilfe.
Die zweite Datei hat keine Spalte für das Mindestalter. Wie kann ich die 2. Spalte mit dem Namen "Mindestalter" erstellen und dann den niedrigsten Wert zuweisen?
Betreff: Einer Spalte den Mindestwert zuweisenHier ist ein kurzes Skript, das das tut, was Sie wollen ... der Schlüssel ist, dass die meisten Menschen nicht erkennen, dass das, was an eine Berechnungsfunktion übergeben wird, bedingt sein kann.Siehe das Skript unten
Names default to here(1);
dt1=data table("1st");
dt2=data table("2nd file");
current data table(dt1);
For(i=1,i<=nrows(dt2), i++,
dt2:Minimum Age[i] =col min(If(contains(dt2:Name[i],dt1:Name),dt1:age,.));
);Betreff: Einer Spalte den Mindestwert zuweisenAnhängen der Dateien