我有以下数据集:
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))
但这不是我要找的结果。
答案 0 :(得分:1)
或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的原始措辞,他们希望首先按类别分组,然后计算每组中不同名称的数量。