转置非常大的数据表你好,
我有一个非常大的数据文件(20 多万行,10 列)需要转置。 不幸的是,jmp 无法快速或高效地执行如此大的文件。 我发现 jmp 能够很容易地处理文本格式的数据。 我已经尝试了所有保存/打开为 .txt 的选项,但没有成功。
有人可以帮助以 txt 格式或数据表(列表、数组等)转换此表吗?
我需要下面的示例表看起来像下面的输出,不使用“转置”功能因为它不适用于百万行以上:''
数据表:
col1 col2
一个l
sw
4j
自卫队
吨
o
p
所需的输出(作为 txt 文件或只有 1 列和 2 行的表格):
col1, a,s,4,t,t,o,p
col2,l,w,j,sdf
谢谢,麻烦您了 :)
回复:如何为 JMP 14 配置 Python?当您指定 python 位置时,例如
Python 初始化(路径(“/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib”),
使用 Python 版本(“3.7”)
);
您声明这是您要使用的特定 Python 版本,位于您指定的位置。 如果您在调用 Ptyhon Init() 时不带参数,或调用较少参数(例如 Python Init(使用 Python 版本(“3.7”))),JMP 会进行更多搜索以尝试找到合适的 Python。 在 Mac 上,您可能总是需要至少指定版本,因为 Apple 为操作系统提供了 Python 2.7。 我们将继续致力于改进 JMP 中的 Python 支持。
回复:如何为 JMP 14 配置 Python?@保罗尼尔森,基于 GM1 的最新帖子:
运行这个脚本:
Clear Log();
Names Default To Here( 1 );
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib"),
Use Python Version("3.7")
);
Python Submit("\[
print("Done importing modules")
]\");
Python Term();
在日志中给出以下输出:

运行这个 JSL 脚本:
Clear Log();
Names Default To Here( 1 );
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib"),
Use Python Version("3.7")
);
Python Submit("\[
import numpy as np
print("Done importing modules")
]\");
Python Term();
向日志提供以下输出:

鉴于成功的退出代码,我认为这个错误非常不清楚。 JMP/JSL 似乎不知道在哪里可以找到要导入的模块?? 任何帮助是极大的赞赏
Re: 转置非常大的数据表太棒了! 感谢 Craige 的大力支持!
Re: 转置非常大的数据表很多选择。 也许像这样对字符串进行后处理。
正则表达式 ("a,b,c,,,,,,,", ",*$", "", GLOBALREPLACE)
/*:
“一、二、三”
这是一些字符操作信息:
http://www.jmp.com/support/help/Work_with_Character_Functions.shtml
https://community.jmp.com/t5/Uncharted/JSL-Character-String-Functions/ba-p/21323
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008
https://community.jmp.com/t5/Uncharted/Pattern-Matching/ba-p/21005
https://community.jmp.com/t5/Uncharted/Back-Reference/ba-p/21267
Re: 转置非常大的数据表非常酷,谢谢。 虽然有用,但我特别想只将字符串值放入单元格中。 不幸的是,该字符串包含用于空单元格的额外逗号分隔符。
IE。假设有 2 列,第 1 列有 10 行,第 2 列只有 5 行的数据。 当我实现上面提到的字符串连接时,我将第二个 col 的字符串值作为 astring = "a,s,r,w,d,,,,,,"
我特别感兴趣的是只得到“a、s、r、w、d”,不包括额外的逗号分隔符。 你有什么方向可以指点我吗? 我将不胜感激。
谢谢你,
湿婆
Re: 转置非常大的数据表是的, http://www.jmp.com/support/help/Accessing_Data_Values.shtml#790448有一个这样的例子:
dt:年龄[10] = 20; // 将第 10 行中的年龄值设置为 20
您可能想要使用所需的列名(和数据类型!)制作一个两行表格原型,并使用红色小三角菜单中的“获取脚本”。 然后您可以将该脚本粘贴到您自己的代码中。 在上面的示例中,[10] 用于第 10 行;您可以为 [1] 和 [2] 使用两个分配。 20 用于数字列;如果要将 astring 变量存储在其中,则您的列是字符。
Re: 转置非常大的数据表超级感谢您的快速回复! 比我想象的容易。 
无论如何,我可以将表格中的特定单元格指定为这个字符串吗?
这样我就有一个表(以我使用的原始示例为例)1 列和 2 行,如下所示:
专栏1
第 1 行:a、s、4、t、t、o、p
第 2 行:l,w,j,sdfRe: 转置非常大的数据表我认为你有非数字列,所以你不能使用矩阵,你可以将你的字符串值作为列表中项目的串联,你可以从带有 <
alist = dt:a<<GETVALUES></GETVALUES>
N 项(列表)= 21000000;
长度(字符串)= 207635028;
Left(astring, 100) = "1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,";
JMP 对字符串的字符数限制为 20 亿个。 你可能会越来越近。