【问题标题】:Move all unique IDs to the same group based on prevalence in each group [duplicate]根据每个组中的流行度将所有唯一 ID 移动到同一组 [重复]
【发布时间】:2021-05-25 10:14:57
【问题描述】:

我有一个数据表,其中有几个 ID 都分配给一个组。但有些 ID 出现在多个组中:

library(data.table)
df = data.table(ID = c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'D', 'D'),
                Group = c(1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1))

 #     ID       Group
 #  1:  A       1
 #  2:  A       1
 #  3:  A       2
 #  4:  B       2
 #  5:  B       2
 #  6:  B       2
 #  7:  C       2
 #  8:  C       3
 #  9:  C       3
 #  10:  D      1
 #  11:  D      1

现在我想将出现在多个组中的 ID 移动到其观察次数最多的组。因此,一个组中可以存在多个唯一 ID,而不是多个组中的唯一 ID。像这样:

 #     ID       Group
 #  1:  A       1
 #  2:  A       1
 #  3:  A       1
 #  4:  B       2
 #  5:  B       2
 #  6:  B       2
 #  7:  C       3
 #  8:  C       3
 #  9:  C       3
 #  10:  D      1
 #  11:  D      1

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以获得每个IDMode 值。

    library(data.table)
    
    Mode <- function(x) {
      ux <- unique(x)
      ux[which.max(tabulate(match(x, ux)))]
    }
    
    df[, Group := Mode(Group), ID]
    df
    
    #    ID Group
    # 1:  A     1
    # 2:  A     1
    # 3:  A     1
    # 4:  B     2
    # 5:  B     2
    # 6:  B     2
    # 7:  C     3
    # 8:  C     3
    # 9:  C     3
    #10:  D     1
    #11:  D     1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多