Ich habe die Anforderung möglicherweise nicht vollständig verstanden. Soweit ich weiß, sind alle Spalten Zeichen und es gibt keine zusätzlichen Informationen, die eine Datums- / Uhrzeitspalte identifizieren würden, mit Ausnahme ihres Namens. Wenn dieser Name immer derselbe ist, müssen Sie die Spalten nicht durchlaufen, sondern können ihn einfach in Ihrem Skript benennen. Die Alternative besteht darin, einen kleinen Dialog zu schreiben, in dem der Benutzer die Spalte auswählen kann, die transformiert werden soll. Außerdem verstehe ich nicht genau, was das Ziel ist: Soll das Datum überall auf der Welt im gleichen Format angezeigt werden oder soll es gemäß den lokalen Einstellungen angezeigt werden? Im Moment gehe ich davon aus, dass die jeweilige Spalte immer den gleichen Namen hat und dass das Datumsformat im lokalen Format angezeigt werden soll. Dann kann das angehängte Skript zumindest Teile dessen tun, was getan werden muss.
Ich habe eine Tabelle, die ich entsprechend formatieren möchte (auch beigefügt)

Die Hauptkomplexität ergibt sich aus den folgenden drei Problemen:
- Benutzer dieses Skripts haben unterschiedliche Datumsformate, da sie unterschiedliche Windows-Computer in verschiedenen Sprachen haben. Zum Beispiel die Datenbankeingabe für die Spalte Terminzeit ist (immer) im Format TT-Mon-JJJJ HH: MM: SS die nicht in Spanisch oder Deutsch existiert.

2. Benutzer haben auch unterschiedliche Zahlenformate. Alle Spalten führen zu leeren numerischen Werten, da ein Komma für Dezimalstellen erwartet wird (3.14 wird nicht als 3,14 erkannt).
3. Nach der ersten Spalte, bei der es sich immer um ein Datum und eine Uhrzeit handelt, können Spalten numerische oder kategoriale Werte enthalten. Im angehängten Beispiel enthält Spalte 3 Kommentare, sodass keine Formatänderung erforderlich ist.
Potentielle Lösungen:
Problem Nr. 1 (Datum / Uhrzeit unter Verwendung des Gebietsschemas)
Vielleicht ist es einfacher zu überprüfen, ob die JMP-Sprache auf Englisch ist. Aktivieren / Deaktivieren Sie die Option, die Gebietsschemaeinstellungen zu ignorieren:
dt = Current Data Table();
<BR />// TODO assert that JMP language is English
Preferences( Use JMP Locale Settings( 1 ) );
dt:datetime<< Set Data Type( Numeric ) << Modeling Type( continuous ) << Format( "Locale Date Time h:m:s" );
Preferences( Use JMP Locale Settings( 0 ) );
dt:datetime<< Format( "Locale Date Time h:m:s" );
Problem Nr. 2
Um das Format von Englisch auf Gebietsschema zu ändern, können wir etwas Ähnliches tun. Weitere Infos in diesem Beitrag
https://community.jmp.com/t5/Martin-Demel-s-Blog/JMP-and-Excel-A-Never-ending-story-Part-2/ba-p/35099
dt = Current Data Table();<BR />
// TODO assert that JMP language is English
Preferences( Use JMP Locale Settings( 1 ) );
dt:column1 << Set Data Type( Numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 0 ) );
dt:column1 << Set Data Type( Numeric ) << Modeling Type( continuous );
Problem Nr. 3
Wie codiere ich die beste Vermutung von JMP, damit Spalten nur von Zeichen an Zahlen übergeben werden?
Nach diesem Beitrag: https://community.jmp.com/t5/Discussions/Convert-data-to-numeric-Only-If-Appropriate/td-p/106692
dt = CurrentDataTable();
// TODO Assert that JMP is in English
Preferences( Use JMP Locale Settings( 1 ) );
// Convert to numeric only if nedeed
For( i = 2, i <= N Cols( dt ), i++,
isNumeric = "NO";
For( theRow = 1, theRow <= 10, theRow++,
If( Column( i )[theRow] != "" & Is Missing( Num( Column( i )[theRow] ) ) == 1,
isNumeric = "NO";
Break();
,
isNumeric = "YES"
)
);
If( isNumeric == "YES",
Column( i ) << set data type( numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 0 ) );
Column( i ) << set data type( numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 1 ) );
);
);
Preferences( Use JMP Locale Settings( 0 ) );
Mir fehlt die Behauptung, dass JMP auf Englisch ist und ob es einen effizienteren Weg gibt (es könnte 100.000 Zeilen und Hunderte von Spalten haben).
Hallo,
Auf alle Einstellungen auf der Registerkarte "Windows" kann NICHT über JSL zugegriffen werden. Daher sind nur Problemumgehungen möglich. Ein Vorschlag: Testen Sie, ob die aktuelle Sprache Englisch ist, und erklären Sie dem Benutzer, wie er sie ändern kann.
If( (Num( "2.1" ) == 2.1),
"English",
lw = New Window( "Warning: inappropriate formatting options",
V List Box(
Spacer Box( Size( 600, 20 ) ),
H List Box(
Spacer Box( Size( 20, 20 ) ),
V List Box(
Text Box( "Warning\!n", <<SET wrap=""> Preferences --> Windows-specific
Set \!"Display Language\!" to \!"English\!" AND
check the box next to \!"Use JMP language rather than System locale settings,...\!n
Then re-start this program\!n",
<<SET wrap=""></SET></SET>
Freundliche Grüße
Bernd