【问题标题】:How to find the number of unique values in vector for each values from another vetor如何从另一个向量中找到每个值的向量中唯一值的数量
【发布时间】:2014-07-17 19:13:58
【问题描述】:

我有两个向量:

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)

【问题讨论】:

    标签: r aggregate data.table apply


    【解决方案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
    

    【讨论】:

    • 谢谢!很棒的方法。
    • 一个有点不同的问题:如何从向量 x 中为 y 中的每个值找到 1、2 的数量?
    • @user45415631 DT[, .N, keyby = list(y, x)]?; Arun - 在 unique 中指定 by 有什么意义?
    【解决方案2】:

    您可以通过 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
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 2015-01-02
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        相关资源
        最近更新 更多