删除具有相同值的列当我使用一些参数运行我的模型时遇到问题。 所以我想在运行模型之前做一些数据清理。 有没有快速删除具有相同值的列的方法? 请告知如何使用 JSL 或任何其他可能适合的方式来做到这一点?
脚本Re: 删除具有相同值的列TXNELSON 的以下帖子适用于 JMPv13.2.1 。Re: 删除具有相同值的列这样可行 !!! 谢谢。Re: 删除具有相同值的列我在 JMP 13.2.1 中运行它并且它有效.....您需要做的就是删除代码中的行
dt << select columns(to_delete_lst);
dt << delete columns;
并将它们替换为
dt << delete columns( to_delete_lst);
Re: 删除具有相同值的列对不起,我无法回答,
该代码在我的计算机上使用 Win10 的 JMP 15 上运行良好,
最后两个步骤是非常基本的命令,应该已经在 JMP 13 中实现了(但我无法检查)。
你能执行这两个步骤吗
分别一个接一个?例如,通过在编辑器中标记脚本行并按下播放按钮。
问题到底出在哪里?
Re: 删除具有相同值的列当我运行这段代码时,它正确识别了重复的列,但实际上并没有删除它们。日志显示没有错误。
“高度等于 height_copy”
“权重等于 weight_copy”
to_delete_lst = {7, 6};
脚本[]
我正在运行 v13.2.1
Re: 删除具有相同值的列你好,
基于后来的帖子,我认为我们没有理解“相同价值观”的说法;我们将每行解释为第 1 列 = 第 2 列,但我推测您的意思是每行中具有相同值的任何列(即 0 StdDev)。 那是对的吗?
如果是这样,我或我更有经验的人应该能够提供一个相对较短的脚本。
最好的,
TSRe: 删除具有相同值的列嗨尼尔森,
谢谢你的建议。但是响应筛选占用了过多的处理时间并且并不理想。 跑了 45 秒还没处理完一半。

Re: 删除具有相同值的列这是如何做到这一点的不同看法。它使用 R 方作为匹配数据的指标。
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( continuous );
obj = dt <<
Response Screening(
Y( Eval( colNames ) ),
X( Eval( colNames ) )
);
dtCalc = obj << get PValues;
dtCalc << select where(Round(:RSquare,4) != 1 | :X == :Y );
try( dtCAlc << delete rows );
dtCompare = dtCalc << subset( selected rows(0), columns("X","Y"));
close(dtCalc,nosave);
for each row(
If(:X > :Y,
hold=:X;
:X = :Y;
:Y = hold;
)
);
dtFinal = dtCompare << Summary(
Group( :X, :Y ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
close( dtCompare, nosave );Re: 删除具有相同值的列Georg,感谢列查看器的想法。
我想我会使用列查看器 -> 摘要 -> 按 stdev = 0 对表进行排序。 然后我可以稍后删除这些列。Re: 删除具有相同值的列我也不确定:)
这意味着,您需要更具体地了解您的需求。
如果你只是想探索一个大表的值,你可能想使用列查看器
列->列查看器
在那里你可以很容易地比较一个大表的列。
Re: 删除具有相同值的列感谢 JSL。 但我不确定它是否符合我的要求。Re: 删除具有相同值的列这一个删除列:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// make some copies of columns
dt << New Column( "weight_copy", set each value( :weight ) );
dt << New Column( "height_copy", set each value( :height ) );
to_delete_lst = {};
For( i = 1, i < N Col( dt ), i++,
For( j = i + 1, j <= N Col( dt ), j++,
If( (Column( i ) << get data type) == (Column( j ) << get data type),
// all celles are equal ?
If( Mean( (Column( i ) << get values) == (Column( j ) << get values) ) == 1,
Print( (Column( i ) << get name) || " equal to " || (Column( j ) << get name) );
insert into(to_delete_lst, j);
);
);
)
);
// show list of equals
Show(to_delete_lst);
wait(3);
dt << select columns(to_delete_lst);
dt << delete columns;Re: 删除具有相同值的列我不想删除行。 我想删除具有相同值的列。Re: 删除具有相同值的列我不确定我是否理解你的意思,
对于建模,您可以选择您认为重要的列,因此无需删除列。
您想删除列具有相同值的一些行吗?
下面是它的代码:
否则请详细描述您需要什么,一个例子可能会很有帮助。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
wait(3);
dt << Select duplicate rows( Match( :age ) );
dt << delete rows;