要件を完全に理解していない可能性があります。私が見るところ、すべての列は文字であり、名前以外は日時列を識別する追加情報はありません。その名前が常に同じ場合、列を繰り返す必要はなく、スクリプトで名前を付けるだけです。別の方法は、変換する列をユーザーが選択できる小さなダイアログを作成することです。また、目標は正確にはわかりません。日付は世界中のどこでも同じ形式で表示されますか、それともローカル設定に従って表示されますか?とりあえず、それぞれの列は常に同じ名前であり、日付形式はローカル形式で表示されるものと想定しています。次に、添付スクリプトは、実行する必要があることの少なくとも一部を実行できます。
適切にフォーマットしたいテーブルがあります(同様に添付)

主な複雑さは、次の3つの問題に起因しています。
- このスクリプトのユーザーは、異なる言語で異なるWindowsマシンを使用するため、異なる日付形式を使用します。たとえば、列のデータベース入力日付時刻 (常に)形式です dd-mon-yyyy hh:mm:ss スペイン語やドイツ語には存在しません。

2。また、ユーザーは異なる数値形式を使用します。すべての列は、小数点にカンマが必要であるため、空の数値になります(3.14は3,14として認識されません)。
3。常に日時である最初の列の後、列には数値またはカテゴリ値を含めることができます。添付の例では、column3にコメントが含まれているため、形式を変更する必要はありません。
潜在的なソリューション:
問題#1(ロケールを使用した日時)
おそらく、JMP言語が英語であることを確認し、ロケール設定を無視するオプションを有効または無効にする方が簡単でしょう。
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" );
問題#2
形式を英語からロケールに変更するには、同様のことができます。この投稿の詳細
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 );
問題#3
JMPからの最良の推測を使用して、列が文字から数値にのみ渡されるようにコーディングする方法は?
この投稿に続いて: 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 ) );
JMPが英語であり、より効率的な方法がある場合(100,000行と数百列になる可能性がある)であることを確認するアサーションがありません。
こんにちは、
「Windows」タブのすべての設定は、JSLからアクセスできません。したがって、回避策のみが可能です。1つの提案。現在の言語が英語かどうかをテストし、そうでない場合はユーザーに変更方法を説明します。
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>
宜しくお願いします
ベルント