r每个唯一值的因子数

时间:2016-12-17 18:09:23

标签: r count aggregate

我有以下数据集:

Names   Category
Jack    1
Jack    1
Jack    1
Tom     0
Tom     0
Sara    0
Sara    0

我正在寻找的是:

Category Number
0        2
1        1

,即每个类别的列名称中的唯一值数。

我可以在第一列中获得唯一值的数量:

length(unique(df$Names))

以及第二列中重复的总类别数:

length(which(df$Category== 1))

但这不是我要找的结果。

3 个答案:

答案 0 :(得分:1)

基础R中的

yarn global bin

aggregate

答案 1 :(得分:0)

使用data.table

library(data.table)
setDT(df)[, .(Number =uniqueN(Names)), by = Category]
#    Category Number
#1:        1      1
#2:        0      2

答案 2 :(得分:-4)

使用dplyr。您甚至不需要先手动获取唯一的名称:

df <- data.frame(Names=c(rep('Jack',3),rep('Tom',2),rep('Sara',2)),
                 Category=c(1,1,1,0,0,0,0))
require(dplyr)

df %>% group_by(Category) %>% summarize(Number = n_distinct(Names))

  Category Number
     <dbl>  <int>
1        0      2
2        1      1

# and you can use as.data.frame(...) on that if you like

更新:目前尚不清楚OP的原始措辞,他们希望首先按类别分组,然后计算每组中不同名称的数量。