gpt4 book ai didi

r - 为相等值的连续运行创建组编号

转载 作者:行者123 更新时间:2023-12-02 20:37:17 25 4
gpt4 key购买 nike

是否有比使用循环更快的方法来创建计数器索引?对于每次连续的相等值,索引应该相同。我发现循环非常慢,尤其是当数据很大时。

为了便于说明,这里是输入和所需的输出

x <- c(2, 3, 9, 2, 4, 4, 3, 4, 4, 5, 5, 5, 1)

所需的结果计数器:

c(1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9)

请注意,连续运行具有不同索引。例如。查看值 24

的所需索引

我的低效代码是这样的:

group[1]<-1
counter<-1
for (i in 2:n){
if (x[i]==x[i-1]){
group[i]<-counter
}else{
counter<-counter+1
group[1]<-counter}
}

最佳答案

如果您有这样的数值,则可以使用 diffcumsum 来累加值的变化

x <- c(2,3,9,2,4,4,3,4,4,5,5,5,1)
cumsum(c(1,diff(x)!=0))
# [1] 1 2 3 4 5 5 6 7 7 8 8 8 9

关于r - 为相等值的连续运行创建组编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30314679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com