我有一个数据集,其中每个人都有一个唯一的个人ID。我想把这些ID号转换成另一组更易于管理的类型 integer 入侵检测系统。
integer
ID <- c(59970013552, 51730213552, 1233923, 2949394, 9999999999)
基本上,我想把这些ID映射到 new_ID ,在哪里
new_ID
> new_ID [1] 1 2 3 4 5
我这样做的原因是我的分析需要 as.integer(ID) ,r将强制大整数 NA . 我试过用 as.integer64 来自 bit64 包,但是类 integer64 与我的分析不兼容。
as.integer(ID)
NA
as.integer64
bit64
integer64
我也想过 ID - min(ID) + 1 为了能有大量的身份证号码。但这也不起作用,因为我的一些较大的ID太大了,即使我减去 min(ID) 价值, 作为.integer(id) 还是会强迫他们 钠 .
ID - min(ID) + 1
min(ID)
作为.integer(id)
钠
这应该是一个副本,但我找不到相关的答案,因此发布了一个答案。
我们可以用 match
match
match(ID, unique(ID)) #[1] 1 2 3 4 5
或转换 ID 进入之内 factor 与…一起 levels
ID
factor
levels
as.integer(factor(ID, levels = unique(ID))) #[1] 1 2 3 4 5