J'ai un tableau que je voudrais formater de manière appropriée (ci-joint également)

La principale complexité vient des trois problèmes suivants :
- Les utilisateurs de ce script auront différents formats de date car ils auront différentes machines Windows dans différentes langues. Par exemple, l'entrée de la base de données pour la colonne date-heure est (toujours) au format jj-lu-aaaa hh:mm:ss qui n'existe pas en espagnol ou en allemand.

2. Les utilisateurs auront également différents formats de nombres. Toutes les colonnes donneront des valeurs numériques vides car il attend une virgule pour les décimales (3.14 ne sera pas reconnu comme 3,14).
3. Après la première colonne, qui est toujours une date-heure, les colonnes peuvent contenir des valeurs numériques ou catégorielles. Dans l'exemple ci-joint, la colonne 3 contient des commentaires, aucun changement de format n'est donc nécessaire.
Solutions potentielles :
Problème n ° 1 (date-heure utilisant les paramètres régionaux)
Le plus simple est peut-être de vérifier que la langue JMP est en anglais, d'activer/désactiver l'option d'ignorer les paramètres régionaux :
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" );
Problème #2
Pour changer le format de l'anglais vers les paramètres régionaux, nous pouvons faire quelque chose de similaire. Plus d'infos dans ce post
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 );
Problème #3
Comment coder en utilisant la meilleure estimation de JMP afin que les colonnes ne soient transmises que des caractères aux chiffres ?
Suite à ce post : 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 ) );
Il me manque l'assertion qui garantit que JMP est en anglais et s'il existe un moyen plus efficace de le faire (il peut avoir 100 000 lignes et des centaines de colonnes).
Bonjour,
toutes les préférences de l'onglet "Windows" ne sont PAS accessibles via JSL. Par conséquent, seules des solutions de contournement sont possibles. Une proposition, tester si la langue courante est l'anglais, sinon expliquer à l'utilisateur comment la changer.
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>
Cordialement
Bernd
Je n'ai peut-être pas bien compris l'exigence. D'après ce que je vois, toutes les colonnes sont des caractères et il n'y a aucune information supplémentaire qui identifierait une colonne datetime, à l'exception de son nom. Si ce nom est toujours le même, vous n'avez pas besoin de parcourir les colonnes, vous pouvez simplement le nommer dans votre script. L'alternative est d'écrire une petite boîte de dialogue qui permet à l'utilisateur de choisir la colonne qui doit être transformée. De plus, je ne comprends pas exactement quel est l'objectif : la date doit-elle être affichée dans le même format partout dans le monde, ou doit-elle être affichée en fonction des paramètres locaux ? Pour le moment, je suppose que la colonne respective porte toujours le même nom et que le format de date doit être affiché au format local. Ensuite, le script joint peut faire au moins une partie de ce qui doit être fait.