How to add count of unique values by group to R data.frame

后端 未结 3 1040
死守一世寂寞
死守一世寂寞 2020-11-22 01:59

I wish to count the number of unique values by grouping of a second variable, and then add the count to the existing data.frame as a new column. For example, if the existing

3条回答
  •  庸人自扰
    2020-11-22 02:30

    This can be also achieved in a vectorized without by group operations by combining unique with table or tabulate

    If df$color is factor, then

    Either

    table(unique(df)$color)[as.character(df$color)]
    # black black black green green   red   red  blue  blue  blue 
    #    2     2     2     1     1     2     2     3     3     3 
    

    Or

    tabulate(unique(df)$color)[as.integer(df$color)]
    # [1] 2 2 2 1 1 2 2 3 3 3
    

    If df$color is character then just

    table(unique(df)$color)[df$color]
    

    If df$color is an integer then just

    tabulate(unique(df)$color)[df$color]
    

提交回复
热议问题