使用已轉置的列保存數據表在轉換列後,我一直試圖獲取數據表以保存相關性。我有一個數據表,前三行有規格限制,我想將它們保存在一個單獨的文件中,因此我可以將該文件用作限製文件,作為數據分佈圖的一部分應用於原始數據。每次打開保存的SPEC LIMITS文件時,它仍然具有非轉置格式的列。具有非轉置列的表和具有轉置列的表都在屏幕上打開:
dt =開放(路徑); //我選擇要打開的文件到數據文件。規格限制在前3行
x = 3; //非原始數據的行數(並且具有規範限制)
n = N行(dt); //獲取表中的總行數
對於(i = n,i> x,i--,//刪除從第4行開始到表結尾的所有行
dt <<刪除行(i);
n = dt <<獲取列名();
dt << Transpose(
列(n)的,
輸出表(“SPEC LIMITS”)
);
:標籤<< Set Name(“Parameter”);
:第1行<< Set Name(“LSL”);
:第2行<< Set Name(“USL”);
:第3行<<設置名稱(“單位”);
dt << Save(“SPEC LIMITS.jmp”); //不保存帶有轉置表列的數據表。
還嘗試將表保存為關閉指令的一部分並得到相同的結果:
關閉(dt,保存(“SPEC LIMITS.jmp”));
我確定有一個簡單的解釋,但是需要用轉置的列來保存表格嗎?謝謝!
Re:使用已轉置的列保存數據表謝謝你的澄清... 我會試一試:)Re:使用已轉置的列保存數據表1。 @stephen_pearson 代碼是一個很好的改進 @JensRiege 碼。 但是,原始代碼的問題來源,同時糾正了 @stephen_pearson 代碼,未在新代碼中註釋。
無法保存代碼的主要問題是在保存數據表時使用了變量“dt”
dt << Save("SPEC LIMITS.jmp");
“dt”指向原始數據表,並且在創建轉置數據表時,
dt << Transpose(
columns(n),
Output Table( "SPEC LIMITS" )
);
顯然有一個假設,即變量“dt”現在指向新的數據表。
@stephen_pearson 正確創建一個新列“dt2”以指向由“Transpose”創建的新表,然後在“Save”函數中使用它
dt2 = dt << Transpose(
columns(n),
Output Table( "SPEC LIMITS" )
);
:Label << Set Name( "Parameter" );
:Row 1 << Set Name( "LSL" );
:Row 2 << Set Name( "USL" );
:Row 3 << Set Name( "Units" );
dt2 << Save("$DESKTOP\SPEC LIMITS.jmp");<BR /><BR />
如果您將“dt2”句柄添加到Transpose(),並將Save函數的“dt”參考更改為“dt2”,則原始代碼應該有效。
Re:使用已轉置的列保存數據表試試這個:
dt = currentdatatable(); // I select the file to data file to open. Spec limits are in first 3 rows
x = 3; // Number of rows that are not raw data (and have spec limits)
dt << select where(Row()>x);
dt << delete rows;
n = dt << Get Column Names("Numeric");
dt2 = dt << Transpose(
columns(n),
Output Table( "SPEC LIMITS" )
);
:Label << Set Name( "Parameter" );
:Row 1 << Set Name( "LSL" );
:Row 2 << Set Name( "USL" );
:Row 3 << Set Name( "Units" );
dt2 << Save("$DESKTOP\SPEC LIMITS.jmp"); // Save data table with table columns transposed.1)簡化刪除行
2)只獲取數字列名稱。如果存在字符列,則如果數據列具有不同的數據類型,則轉置將失敗
3)指定保存文件的位置($ HOME,$ TEMP也是要探索的選項)。如果你不:
I / O問題。
無法在ReadWrite模式下打開。
該系統找不到指定的文件。
無法保存文件。