Hallo JMP Community!
Ich versuche also, die Datenanalyse zu automatisieren und mein JMP-Skript ist sehr hart codiert. Ich möchte dies robuster machen, habe aber Probleme mit einem Teil.
Was mein Skript macht, ist, dass es alle Zeilen einer Spalte durchläuft und die Werte der Zeichenfolgen in jeder Zeile analysiert. Da die Daten in einem String-Format gesammelt werden, z. B.: 0,002 | 0,003 | 0,004 | 0,005 | .... usw. Es wird mit einem '|' begrenzt. Mein Skript erstellt 30 neue Spalten (da es sich um die Anzahl der Werte handelt, die ich in meiner Trennzeichenfolge erwartet) und geht dann in verschachtelte Schleifen, um alle Daten nach dem Trennzeichen zu analysieren und die Werte in den richtigen Spalten in der richtigen Reihenfolge zu ordnen. Ich habe gerade entdeckt, dass die Zeichenfolge manchmal nicht alle 30 Werte hat ... Es könnte nur 20 sein. In diesem Fall gibt JMP einen Fehler aus und beendet mein Skript. Wie bekomme ich, dass JMP sich nicht um diesen Fehler kümmert und das Skript weiterhin ausführt? (Ich habe am Ende eine Continue () - Funktion hinzugefügt, die die Zeile mit nur 20 Werten ausführt, aber dann werden die Daten für den Rest der Datentabelle nicht analysiert ...)
Das ist mein Code:
dt << New Column("Year1", Numeric, Continuous, Format("Best",12))
<< New Column("Year2", Numeric, Continuous, Format("Best",12))
<< New Column("Year3", Numeric, Continuous, Format("Best",12))
<< New Column("Year4", Numeric, Continuous, Format("Best",12))
<< New Column("Year5", Numeric, Continuous, Format("Best",12))
<< New Column("Year6", Numeric, Continuous, Format("Best",12))
<< New Column("Year7", Numeric, Continuous, Format("Best",12))
<< New Column("Year8", Numeric, Continuous, Format("Best",12))
<< New Column("Year9", Numeric, Continuous, Format("Best",12))
<< New Column("Year10", Numeric, Continuous, Format("Best",12))
<< New Column("Year11", Numeric, Continuous, Format("Best",12))
<< New Column("Year12", Numeric, Continuous, Format("Best",12))
<< New Column("Year13", Numeric, Continuous, Format("Best",12))
<< New Column("Year14", Numeric, Continuous, Format("Best",12))
<< New Column("Year15", Numeric, Continuous, Format("Best",12))
<< New Column("Year16", Numeric, Continuous, Format("Best",12))
<< New Column("Year17", Numeric, Continuous, Format("Best",12))
<< New Column("Year18", Numeric, Continuous, Format("Best",12))
<< New Column("Year19", Numeric, Continuous, Format("Best",12))
<< New Column("Yearn20", Numeric, Continuous, Format("Best",12))
<< New Column("Year21", Numeric, Continuous, Format("Best",12))
<< New Column("Year22", Numeric, Continuous, Format("Best",12))
<< New Column("Year23", Numeric, Continuous, Format("Best",12))
<< New Column("Year24", Numeric, Continuous, Format("Best",12))
<< New Column("Year25", Numeric, Continuous, Format("Best",12))
<< New Column("Year26", Numeric, Continuous, Format("Best",12))
<< New Column("Year27", Numeric, Continuous, Format("Best",12))
<< New Column("Year28", Numeric, Continuous, Format("Best",12))
<< New Column("Year29", Numeric, Continuous, Format("Best",12))
<< New Column("Year30", Numeric, Continuous, Format("Best",12));
// Iterate through the rows of :Test_Result (where the delimited string is stored)
for (i = 1, i <= nrows(dt), i++,
one_test_result_list = words(column(dt,"Test_Result"), "|");
for (k = 1, k <= nitems(one_test_result_list), k++,
// Put the values in the proper column at the proper row (i)
dt:Year1 = num(one_test_result_list[1]);
dt:Year2 = num(one_test_result_list[2]);
dt:Year3 = num(one_test_result_list[3]);
dt:Year4 = num(one_test_result_list[4]);
dt:Year5 = num(one_test_result_list[5]);
dt:Year6 = num(one_test_result_list[6]);
dt:Year7 = num(one_test_result_list[7]);
dt:Year8 = num(one_test_result_list[8]);
dt:Year9 = num(one_test_result_list[9]);
dt:Year10 = num(one_test_result_list[10]);
dt:Year11 = num(one_test_result_list[11]);
dt:Year12 = num(one_test_result_list[12]);
dt:Year13 = num(one_test_result_list[13]);
dt:Year14 = num(one_test_result_list[14]);
dt:Year15 = num(one_test_result_list[15]);
dt:Year16 = num(one_test_result_list[16]);
dt:Year17 = num(one_test_result_list[17]);
dt:Year18 = num(one_test_result_list[18]);
dt:Year19 = num(one_test_result_list[19]);
dt:Year20 = num(one_test_result_list[20]);
dt:Year21 = num(one_test_result_list[21]);
dt:Year22 = num(one_test_result_list[22]);
dt:Year23 = num(one_test_result_list[23]);
dt:Year24 = num(one_test_result_list[24]);
dt:Year25 = num(one_test_result_list[25]);
dt:Year26 = num(one_test_result_list[26]);
dt:Year27 = num(one_test_result_list[27]);
dt:Year28 = num(one_test_result_list[28]);
dt:Year29 = num(one_test_result_list[29]);
dt:Year30 = num(one_test_result_list[30]);
Continue();
);
);
Danke für jede Hilfe !!
Eine Möglichkeit ist, die Namen aller Ihrer neuen Spalten in eine Liste zu schreiben (für nur drei Tests wäre dies 'testList = {"DDI1_TXP_0_SIU", "DDI1_TXP_1_SIU", "DDI1_TXP_2_SIU"};'). Dann sollte die innere ('k') Schleife sein:
for (k = 1, k <= nitems(one_test_result_list), k++,
Column(dt, testList[) = num(one_test_result_list);
);
Beachten Sie jedoch, dass diese Logik davon ausgeht, dass Messwerte nur "nach rechts fehlen" (wenn also in meinem Beispiel DDI1_TXP_0_SIU in der Zeichenfolge fehlte und die anderen beiden nicht, dann wäre die Zuweisung nicht korrekt).