代码之家  ›  专栏  ›  技术社区  ›  Adrian

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

  •  0
  • Adrian  · 技术社区  · 7 年前

    我有一个数据集,其中每个人都有一个唯一的个人ID。我想把这些ID号转换成另一组更易于管理的类型 integer 入侵检测系统。

    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太大了,即使我减去 min(ID) 价值, 作为.integer(id) 还是会强迫他们 .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ronak Shah    7 年前

    这应该是一个副本,但我找不到相关的答案,因此发布了一个答案。

    我们可以用 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
    
    推荐文章