gpt4 book ai didi

r - 获取值运行的开始和结束索引

转载 作者:行者123 更新时间:2023-12-04 16:38:25 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Find start and end positions/indices of runs/consecutive values

(2 个回答)


2年前关闭。




我有一个向量:

a <- c(1, 1, 0, 0, 1, 2, 0, 0)

我想获取每次运行的相等值的开始和结束索引:
number start  end
0 3 4
0 7 8
1 1 2
1 5 5
2 6 6

最佳答案

来自基础 R 的解决方案。

a <- c(1,1,0,0,1,2,0,0)

# Get run length encoding
b <- rle(a)

# Create a data frame
dt <- data.frame(number = b$values, lengths = b$lengths)
# Get the end
dt$end <- cumsum(dt$lengths)
# Get the start
dt$start <- dt$end - dt$lengths + 1

# Select columns
dt <- dt[, c("number", "start", "end")]
# Sort rows
dt <- dt[order(dt$number), ]

dt
# number start end
#2 0 3 4
#5 0 7 8
#1 1 1 2
#3 1 5 5
#4 2 6 6

更新

这是使用 with 的解决方案使代码更简洁。
with(rle(a), data.frame(number = values,
start = cumsum(lengths) - lengths + 1,
end = cumsum(lengths))[order(values),])
# number start end
#2 0 3 4
#5 0 7 8
#1 1 1 2
#3 1 5 5
#4 2 6 6

关于r - 获取值运行的开始和结束索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46961415/

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