R-创建顺序虚拟变量索引数组吗?

问题描述

我在数据表中有一列具有唯一值的列,这些唯一值是非顺序的,例如[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中有一种简单的方法吗?

编辑:感谢评论/回答,我使用了seq_along函数

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