删除不在列表中的列嗨,大家好,
我有一组想要保留的列,然后删除除这组之外的所有列。
我想要删除的列数量很多。
有没有简单的方法可以使用脚本来完成此操作?
谢谢。回复:删除不在列表中的列谢谢!可以对符合我条件的列进行子集吗?
我感兴趣的是只对包含关键字的列进行子集,而不是只对完整的列名进行子集(因为我的数据量很大)。回复:删除不在列表中的列嗨,戴夫,非常感谢大家的帮助。顺便说一句,你的博客写得真棒!我有一个非常大的数据集,包含超过 8000 列,有些列需要保留,有些则不需要。我最终对想要保留的前几列使用了子集。之后,我对表的其余部分运行一个循环,以保留与我的关键字(例如“_M”)匹配的列。最后,将子集与我保留的表(列名符合我的条件)连接起来。现在一切正常。但是,我再次尝试在下面的代码中使用列表,但似乎无法运行。这是否不允许使用列表?dt = Current Data Table(); // 选择数据表 dt << Set Name( "Raw_Data" ); dt << Subset( Columns( 1 :: 30 ), Rows( all ), Output Table( "Subset" ) ); // 保留主要列名 dt << Revert(); // 保留 vt 列 colList = Data Table( "Raw_Data" ) << Get Column Names( String ); For( i = N Cols( dt ), i >= 1, i--, If( !Contains( colList[i], "_M" ), //仅保留名称中带有“_M”的列 dt << Delete Column( Column( colList[i] ) ) ) );回复:删除不在列表中的列抱歉,我可能理解错了。代码是从列表中删除的,而不是从表中删除的。但是更新后的列表可以与 Subset 命令一起使用,生成仅包含您感兴趣的列的子集表。
更多信息请访问: http://www.pega-analytics.co.uk/blog/scripting-table-subsets/
回复:删除不在列表中的列“做事的方法有百万种……”Talking Heads乐队,《What A Day That Was》,1984年
如果要删除的列数确实很大,那么对表进行子集化(包含所有行)可能更有效,只保留列表中的列。这样可以节省大量的迭代删除操作。
但你的申请可能没那么容易。
回复:删除不在列表中的列嗨,Dave,感谢您快速回复我的问题。我运行了您的示例代码,但列表中的列似乎仍然出现在我的表格中。是不是我漏掉了什么?dt = Data Table( "temp" ); all = dt << Get Column Names( string ); vt = {"lot_id", "wf_id", "die_x"}; For( i = 1, i <= N Items( vt ), i++, pos = Contains( all, vt[i] ); If( pos > 0, Remove From( all, pos ) ); );回复:删除不在列表中的列思路虽然略有不同,但以下代码会删除列表中的列。具体来说,你有一个包含所有列的列表( 全部 ),如果列表中包含不包括以外的项,则会将其删除。
all = dt << Get Column Names(string);
// assume excl is a list of column names that i want to remove
For (i=1,i<=NItems(excl),i++,
pos = Contains(all,excl[i]);
If (pos>0,
RemoveFrom(all,pos)
)
);
回复:删除不在列表中的列你好。我正在浏览这个讨论。觉得这个主题很有帮助,但我找不到解决方案。一定是被删掉了吧?如果你能回复一下就好了。谢谢!回复:删除不在列表中的列如果只有数字项(左值),这种方法或许可行。然而,列名很少出现这种情况。或许你可以巧妙地使用关联数组,在名称和数字之间切换。回复:删除不在列表中的列谢谢,成功了。我希望你能用两个列表,然后一个列表减去另一个列表。回复:删除不在列表中的列循环遍历所有列,通过将每列与保留列列表进行比较来创建要删除的列的列表。
例子