我有一个数据集,其中每个人都有一个唯一的个人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
。
答案 0 :(得分:1)
这应该是重复的,但是我找不到相关的答案,因此发布了答案。
我们可以使用match
match(ID, unique(ID))
#[1] 1 2 3 4 5
或将ID
与factor
一起转换成levels
as.integer(factor(ID, levels = unique(ID)))
#[1] 1 2 3 4 5