R - 创建一个顺序虚拟变量索引数组?
R - creating a sequential dummy variable index array?
我在数据表中有一列具有非连续的唯一值,比如 [1,2,3,100,101,200]
但我想要的是 [0,1,2,3,4,5]
(或 [1,2,3,4,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 中有没有一种简单的方法可以做到这一点?
编辑:感谢 comment/answer,我使用了 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 and/or 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)
也就是说,因为,第二个元素应该是真实索引的列表。而这些不是索引,而是值。
根据评论 link,这可以通过 seq_along
实现,例如 seq_along(4:10)
:)
https://renenyffenegger.ch/notes/development/languages/R/functions/seq_along
我在数据表中有一列具有非连续的唯一值,比如 [1,2,3,100,101,200]
但我想要的是 [0,1,2,3,4,5]
(或 [1,2,3,4,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 中有没有一种简单的方法可以做到这一点?
编辑:感谢 comment/answer,我使用了 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 and/or 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)
也就是说,因为,第二个元素应该是真实索引的列表。而这些不是索引,而是值。
根据评论 link,这可以通过 seq_along
实现,例如 seq_along(4:10)
:)
https://renenyffenegger.ch/notes/development/languages/R/functions/seq_along