如何在另一个矢量中找到每个值的向量中唯一值的数量

时间:2014-07-17 19:13:58

标签: 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)

如何从Y中找到每个数字中X的唯一数字?

我知道如何从Y中找到每个数字中X的非唯一数字的数量:

r=aggregate(x ~ y , data= data, FUN=length)

3 个答案:

答案 0 :(得分:1)

你可以用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

答案 1 :(得分:1)

使用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

答案 2 :(得分:0)

你可以这样做:

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