如何为来自另一个vetor的每个值查找向量中唯一值的数量

如何为来自另一个vetor的每个值查找向量中唯一值的数量,r,aggregate,data.table,apply,R,Aggregate,Data.table,Apply,我有两个向量: x <- c(1,5,3,2,3, 4,1,2,3,4, 10,5,2,10,12) y <- c(1,1,2,2,2, 3,3,1,4,4, 4,5,5,4,4) 您可以通过以下方式使用dplyr进行操作: data.frame(x,y) %>% group_by(y) %>% summarize(nb=length(unique(x))) 其中: y nb 1 1 3 2 2 2 3 3 2 4 4 4 5 5 2

我有两个向量:

x <- c(1,5,3,2,3, 4,1,2,3,4, 10,5,2,10,12)
y <- c(1,1,2,2,2, 3,3,1,4,4, 4,5,5,4,4)

您可以通过以下方式使用dplyr进行操作:

data.frame(x,y) %>% 
    group_by(y) %>% 
    summarize(nb=length(unique(x)))
其中:

  y nb
1 1  3
2 2  2
3 3  2
4 4  4
5 5  2

使用
data.table
,这非常简单:

require(data.table)
DT = data.table(x,y)
unique(DT, by=c("x", "y"))[, .N, by=y]
#    y N
# 1: 1 3
# 2: 2 2
# 3: 3 2
# 4: 4 4
# 5: 5 2
你可以做:

rowSums(!!table(y,x))
# 1 2 3 4 5 
# 3 2 2 4 2 

谢谢很好的方法。一个稍微不同的问题:对于y中的每个值,如何从向量x中找到1,2的数量?@user45415631
DT[,.N,keyby=list(y,x)]
?;Arun-在
唯一的
中指定
有什么意义?
rowSums(!!table(y,x))
# 1 2 3 4 5 
# 3 2 2 4 2