我必须导入一些文本文件,其中逗号 (,) 用作小数点分隔符。 我不想从英语/使用 JMP 设置更改我的设置,否则我的其他导入和脚本将停止工作,所以我想我会尝试 JMP 16.1 中的新功能(在 JMP 中获取和设置显示语言的 JSL 命令) 那@Jeff_Perkinson提及。
所以我开始构建我的小脚本:
</CODE></P><PRE><CODE class=" language-jsl">Get Preferences( Custom Locale Settings );
Preferences( Custom Locale Settings( Decimal Separator(",") ) );
Open(
"myfile",
columns(
...
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Other( "0x3b" ), CSV( 0 ) ),
Strip Quotes( 1 ),
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( 0 ),
Column Names Start( 1 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
</CODE></P><P>但是什么也没有发生 - 逗号不会被识别为小数分隔符,并且数字列被导入为字符列,这完全不是我想要的。</P><P>所以有什么帮助吗? 我的导入设置是否有问题(我没有更改任何标准首选项,只是使用分号作为字段分隔符的结尾)或者我是否发现了错误?</P><P>我的 JMP 版本是 16.1,如果有帮助的话,我使用 Windows 版本。</P></LINGO-BODY><LINGO-LABS id="lingo-labs-411484" slang="en-US"><LINGO-LABEL>脚本编写</LINGO-LABEL><LINGO-LABEL>视窗</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-412622" slang="en-US">回复:在 JMP 16 中使用小数分隔符逗号导入 - 自定义区域设置不起作用</LINGO-SUB><LINGO-BODY id="lingo-body-412622" slang="en-US"><P>你好菲力</P><P>我认为解决您的问题的禁食方法是使用重新编码功能。 转到列标题,右键单击并激活“重新编码”,然后转到红色三角形“转换为字符”再次转到红色三角形“替换字符串”并将字符串更改为您想要的。 之后,您可以将列字符改回数字。</P><P>希望这有帮助吗?</P><P> </P><P>问候</P><P> </P><P>鲁</P></LINGO-BODY><LINGO-SUB id="lingo-sub-426293" slang="en-US">回复:在 JMP 16 中使用小数点分隔符逗号导入 - 自定义区域设置不起作用</LINGO-SUB><LINGO-BODY id="lingo-body-426293" slang="en-US"><P>似乎我发现了一个错误 - 是的,重新编码或编写脚本可以解决它,但我想以一种聪明的方式尝试它......</P></LINGO-BODY><LINGO-SUB id="lingo-sub-428895" slang="en-US">回复:在 JMP 16 中使用小数分隔符逗号导入 - 自定义区域设置不起作用</LINGO-SUB><LINGO-BODY id="lingo-body-428895" slang="en-US"><P>在与 JMP 支持人员交谈后,我们找到了这个解决方案:</P><PRE><CODE class="">Preferences( Custom Locale Settings( Decimal Separator(",") ) );
Open(
"/C:/Temp/test_import.csv",
columns(
New Column("Number", Numeric, "Continuous", Format("Best", 12)),
New Column("Number2", Numeric, "Continuous")
),
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Other(";"), CSV(0)),
Strip Quotes(1),
Use Apostrophe as Quotation Mark(0),
Use Regional Settings(1),
Scan Whole File(1),
Treat empty columns as numeric(0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Labels(1),
Column Names Start(1),
Data Starts(2),
Lines To Read("All"),
Year Rule("20xx")
)
)
关键是设置使用区域设置(1)并在导入期间将列设置为数字。
这可能是一个错误(您可以联系支持@jmp.com ),但你能暂时摆脱这种情况吗? 例如,您可以将“,”替换为“。”在特定列中,然后尝试将列转换为数字。