【问题标题】:Count certain number pairs that occurs in vector计算向量中出现的某些数字对
【发布时间】:2014-04-10 11:43:34
【问题描述】:

有没有什么好的解决方案如何计算向量或数据框列中的某些数字对?

我有这样的数据,我想计算有多少对组合为 2 3(或其他组合)出现在向量中。或者 2 在 3 之前出现了多少次。

 set.seed(1)
 sample(1:5, 50, replace=T)

结果应该是:

number combination   count
2 3                  2
4 1                  4
5 4                  3

我尝试了函数匹配,但它不能同时使用两个数字。

任何帮助将不胜感激,
马丁

【问题讨论】:

    标签: r count


    【解决方案1】:

    你可以试试这样的:

    x <- sample(1:50, 50, rep=T)
    table(paste(x[-length(x)], x[-1]))
    # with dplyr
    y <- data.frame(x=paste(x[-length(x)], x[-1]))
    summarise(group_by(y,x), N=n())
    # or if you need to keep the first and second value
    x <- sample(1:5, 50, rep=T)
    y <- data.frame(x1=x[-length(x)], x2=x[-1])
    summarise(group_by(y, x1, x2), N=n())
    

    【讨论】:

    • 不错:) 这正是我想要的。
    【解决方案2】:

    使用表:

    set.seed(1)
    sample(1:5, 50, replace=T)
    ## [1] 2 2 3 5 2 5 5 4 4 1 2 1 4 2 4 3 4 5 2 4 5 2 4 1 2 2 1 2 5 2 3 3 3 1 5 4 4 1 4 3 5 4 4 3 3 4 1 3 4 4
    table(data.frame(first=x[-length(x)],second=x[-1]))
    ##      second
    ## first 1 2 3 4 5
    ##     1 2 0 2 4 1
    ##     2 1 3 2 1 1
    ##     3 4 1 5 2 3
    ##     4 2 4 2 1 2
    ##     5 0 0 4 2 0
    

    所以 5 5 对是 0,3 1 是 4,3 3 是 5。

    【讨论】:

    • 这也是不错的选择。
    猜你喜欢
    • 2021-05-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多