R:如何将一组整数映射到另一组整数

时间:2018-07-19 05:18:04

标签: r integer

我有一个数据集,其中每个人都有一个唯一的个人ID。我有兴趣将这些ID号转换为另一组更易于管理的integer类型ID。

ID <- c(59970013552, 51730213552, 1233923, 2949394, 9999999999)

基本上,我想将这些ID映射为new_ID,其中

> new_ID
[1] 1 2 3 4 5

我这样做的原因是我的分析需要as.integer(ID),并且R会将大整数强制转换为NA。我尝试使用as.integer64包中的bit64,但是类integer64与我的分析不兼容。

我还考虑过ID - min(ID) + 1,以避开拥有巨大ID号的问题。但这也行不通,因为我的一些较大的ID太大,以至于即使我减去min(ID)值,as.integer(ID)仍会将其强制为NA

1 个答案:

答案 0 :(得分:1)

这应该是重复的,但是我找不到相关的答案,因此发布了答案。

我们可以使用match

match(ID, unique(ID))
#[1] 1 2 3 4 5

或将IDfactor一起转换成levels

as.integer(factor(ID, levels = unique(ID)))
#[1] 1 2 3 4 5