【问题标题】:Counting specific sets of repeats计算特定的重复组
【发布时间】:2019-06-06 19:40:37
【问题描述】:

我必须在 r 中编写代码,我必须计算向量中一组特定数字一个接一个重复的次数。

例如,在以下一组数字中,我想计算一个数字在其自身之后重复的次数,例如 2,2 和 4,4,或者甚至在其自身之后连续重复 3 次,例如为 1,1,1 或 3,3,3,不计算单个数字在整个集合中出现的次数。

5, 3, 2, 2, 4, 1, 4, 4, 6, 1, 3, 2, 1, 4, 3, 1, 6, 4, 5, 5, 3, 4, 3, 4, 4, 5, 6, 6, 2, 4, 6, 1, 1, 1, 2, 2, 4, 3, 3, 3, 1, 3, 5, 1, 5, 2, 2, 6, 5, 6, 3

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用rle 查找重复的连续值。例如,

    i1 <- rle(x)
    setNames(i1$lengths[i1$lengths > 1], paste0('value:', i1$values[i1$lengths > 1]))
    #value:2 value:4 value:5 value:4 value:6 value:1 value:2 value:3 value:2 
    #      2       2       2       2       2       3       2       3       2 
    

    数据

    dput(x)
    c(5, 3, 2, 2, 4, 1, 4, 4, 6, 1, 3, 2, 1, 4, 3, 1, 6, 4, 5, 5, 
    3, 4, 3, 4, 4, 5, 6, 6, 2, 4, 6, 1, 1, 1, 2, 2, 4, 3, 3, 3, 1, 
    3, 5, 1, 5, 2, 2, 6, 5, 6, 3)
    

    【讨论】:

    • 或者使用rletablef &lt;- function(x) {r &lt;- rle(x); idx &lt;- r$lengths &gt; 1; table('value' = r$values[idx], 'length' = r$lengths[idx]) }; f(x)
    猜你喜欢
    • 2021-09-18
    • 2019-10-16
    • 1970-01-01
    • 2020-05-28
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2019-08-20
    相关资源
    最近更新 更多