轉置非常大的數據表你好,
我有一個非常大的數據文件(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 億個。 你可能會越來越近。