【问题标题】:create new observations based on grouped ids [duplicate]根据分组的 ID 创建新的观察结果 [重复]
【发布时间】:2021-03-22 14:47:46
【问题描述】:

我想基于另一个 id 变量创建一个新的 id 变量。这是我的数据的样子:

ID
250
250
340
340
340
650
650
650

我想要:

ID      New_ID
250       1
250       1
340       2
340       2
340       2
650       3
650       3
650       3

我尝试在 tidyverse 中使用“group_by”,但我遇到了错误。有人可以帮忙吗?

【问题讨论】:

    标签: r dataframe dplyr group-by tidyverse


    【解决方案1】:

    一种选择是使用来自data.tablerleid

    data.table::rleid(d$ID)
    
    # [1] 1 1 2 2 2 3 3 3
    

    将该列添加到数据中:

    d %>%
        mutate(new_id = data.table::rleid(ID))
    
       ID new_id
    1 250      1
    2 250      1
    3 340      2
    4 340      2
    5 340      2
    6 650      3
    7 650      3
    8 650      3
    

    另一种选择是利用factor 函数。 即使您的数据未按ID 排序,这也会起作用:

    d %>%
        mutate(new_id = as.numeric(factor(ID)))
    
       ID new_id
    1 250      1
    2 250      1
    3 340      2
    4 340      2
    5 340      2
    6 650      3
    7 650      3
    8 650      3
    

    数据

    d <- structure(list(ID = c(250L, 250L, 340L, 340L, 340L, 650L, 650L, 
                               650L)), 
                   class = "data.frame", 
                   row.names = c(NA, -8L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      相关资源
      最近更新 更多