通过另一列设置值顺序或值标签我遇到了一个棘手的数值排序/标记问题。请参见附件。数据来自气相色谱仪。关键的顺序并非化合物名称的字母顺序,而是保留时间(RT)。共有31种化合物,因此手动对化合物列进行数值排序,或者手动标记保留时间或分子量列的数值,都将非常繁琐且容易出错。任何处理色谱或光谱数据的人可能都会遇到同样的问题……
是否有通过对话框的方式,以另一列为参考来设置值标签或顺序?
或者,有没有人有可以实现这个功能的脚本?
我还发布了匿名化后的数据表版本。
提前致谢!
数据融合与清理回复:通过另一列设置值顺序或值标签此方法假定您需要手动添加“MW Order”列,因此它只查看“RT”列。无需对表格进行排序。
Names Default To Here( 1 );
dt << New Column( "Order", numeric, Formula( Col Rank( :R.T. ) ) );
order_list = {};
Wait( 0 );
For Each( {{k, v}, i}, Associative Array( :Order, :Component ), Insert Into( order_list, v ) );
Eval( Eval Expr( :Component << Set Property( "Value Order", {Custom Order( Expr( order_list ) )}, Common Order( 0 ) ) ) );
dt << Delete Columns( "Order" );
回复:通过另一列设置值顺序或值标签谢谢!它按预期工作了*
* 需要添加为第 2 行:dt = Current Data Table ();
回复:通过另一列设置值顺序或值标签哇,这是一种非常优雅的将一列的顺序映射到另一列的方法!
order_list={};
For Each( {{k, v}, i}, Associative Array( :Order, :Component ), Insert Into( order_list, v ) );
- Associative Array 带有列引用:
Associative Array( :Order, :Component ) !!! (--> find the documentation)
automatically: duplicates get skipped, entries ... ordered by keys
- For Each( {{k, v}, i} ... -> {v}
作为一种替代方案:
Associative Array( :Order, :Component ) << get values
回复:通过另一列设置值顺序或值标签你也可以手动完成这项操作。
创建汇总表(根据需要使用统计数据)

对数据进行排序

设置汇总表中指定列的值顺序

从汇总表中复制列属性,并粘贴到原始表中。


(我使用的是修改后的脚本版本)
回复:通过另一列设置值顺序或值标签尽管我经常使用关联数组,但我仍然会忘记 <
回复:通过另一列设置值顺序或值标签应用案例:
按邮政编码对各州(名称=缩写)进行排序:
图表改造:麻疹热力图
回复:通过另一列设置值顺序或值标签@多发性硬化症提出的替代方案
如何按另一列值对 x 轴进行排序
汇总 + 排名索引