使用已转置的列保存数据表在转换列后,我一直试图获取数据表以保存相关性。我有一个数据表,前三行有规格限制,我想将它们保存在一个单独的文件中,因此我可以将该文件用作限制文件,作为数据分布图的一部分应用于原始数据。每次打开保存的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模式下打开。
该系统找不到指定的文件。
无法保存文件。