【问题标题】:Reduce each consecutive sequence to its value and length将每个连续序列减少到它的值和长度
【发布时间】:2011-03-01 22:43:57
【问题描述】:

假设您有一个包含连续值的向量:

v <- c(1, 1, 1,  2, 2, 2, 2,  1, 1,  3, 3, 3, 3)

如何最好将其减少到每次运行一个值和每次运行的长度。 IE。第一次运行是1 重复两次;第二次运行:2 重复四次;第三次运行:1 重复两次,依此类推:

v.df <- data.frame(value = c(1, 2, 1, 3),
                   repetitions = c(3, 4, 2, 4))

在程序语言中,我可能只是遍历一个循环并构建 data.frame,但是对于 R 中的大型数据集,这种方法效率低下。有什么建议吗?

【问题讨论】:

    标签: r sequence repeat reduction


    【解决方案1】:

    或者更简单

    data.frame(rle(v)[])
    

    【讨论】:

    • 很好,更简洁。
    • 另一种方式data.frame(unclass(rle(v)))as.data.frame.list(rle(v))
    【解决方案2】:
    with(rle(v), data.frame(values, lengths))
    

    应该会给你你需要的东西。

    values lengths
         1       3
         2       4
         1       2
         3       4
    

    【讨论】:

    • 这正是我想到的功能;我只是想不起我这辈子的名字!非常感谢。
    猜你喜欢
    • 2011-12-13
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2013-05-19
    • 2023-03-27
    • 2023-03-07
    相关资源
    最近更新 更多