问题描述
我在数据表中有一列具有唯一值的列,这些唯一值是非顺序的,例如[1,2,3,100,101,200]
,但我想要的是[0,1,4,5]
(或[1,5,6]
代表R的第一个索引为1 。)在python中,我可以做一些简单的事情,例如:
lookup = {elem:idx for idx,elem in enumerate(column)}
reverse_lookup = {idx:elem for idx,elem in enumerate(column)}
idx_array = [lookup[elem] for elem in column]
在R中有一种简单的方法吗?
c_idx <- seq_along(unique(off$callgroup))
c_val <- unique(off$callgroup)
a_idx <- seq_along(unique(off$agent_idx))
a_val <- unique(off$agent_idx)
如您所见,我有四个数组。 c_idx是唯一值的数组,而c_val是它们的顺序索引(通过a_idx和a_val对agent_idx进行相同的设计)。在我的数据表中,有任何给定的c_val和/或a_val的多个实例。
有没有办法交换价值? (R看到c_val的给定值,检索索引,在相同索引下检索c_idx中的值,然后在数据表上交换它们?)
显然,这不会产生预期的效果:
off2$callgroup <- replace(off$callgroup,c_val,c_idx)
off2$agent_idx <- replace(off$agent_idx,a_val,a_idx)
也就是说,因为第二个元素应该是真实索引的列表。这些不是索引,而是值。
解决方法
根据评论链接,可以使用SystemSidebar
例如<Route exact path="/" component={SystemSidebar} />
来实现:)
https://renenyffenegger.ch/notes/development/languages/R/functions/seq_along