我倾向于每天使用相同类型的数据。每次加载文件时,JMP 都会将某些列设置为“连续”,这样作为名义值确实效果更好。
有没有办法告诉 JMP,如果它看到具有特定名称(例如“case_id”)的列,它应该始终将其标记为名义列?
我知道脚本可以做到这一点,但每次打开文件时都必须运行脚本有点乏味。
嗨@BHarris ,
在导入过程中,您可以右键单击该列以将其定义为名义值。但是,我猜您想自动执行该操作,而无需每次打开工作文件时重新定义它。
我认为,如果您可以将脚本转换为“加载项”,则可以告诉 JMP,如果他们看到具有特定名称的列,则每次打开文件时始终将其定义为名义名称。

但还是有疑问;
- 您打开的文件不在标准化的“列”/“标题”位置?
- 或者它是任何数据文件,但“case_id”列将始终存在?
是的,这些是具有“case_id”列的 .tsv 文件 - 不保证文件之间位于同一列中。
是否可以将加载项编程为在每次打开文件时运行?
您不需要使用默认的打开文件功能,而是直接通过插件打开文件。
我已经测试了如下简单脚本,将 1 个文件夹内的 2 个 TSV 文件的“case_id”转换为名义上的。
请注意我设置的路径是“Documents/TSV”。
您可以更改在您的电脑上进行测试的路径。
如果一切顺利,那么您可以将此 JSL 脚本转换为插件(请参阅https://community.jmp.com/t5/Learning-Center/Add-In-Builder/ta-p/276711 )
希望能帮助到你。
//Open Table to pick file
Names Default To Here( 1 );
file = Pick File(
"Select the TSV file to input",
"$DOCUMENTS/TSV",
{"All Files|*"},
1,
0
);
If( file != "",
dt1 = Open(
file,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, CSV( 0 ) ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
First Named Column( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
//Standardize "case_ID" to character nominal
Names Default To Here( 1 );
dt1 :case_id << Data Type( Character ) <<
Set Modeling Type( "Nominal" );