gpt4 book ai didi

r - 查找长度等于或大于 n 的最新 TRUE 序列

转载 作者:行者123 更新时间:2023-12-02 01:33:53 25 4
gpt4 key购买 nike

我有如下数据:

library(dplyr)
ex <- data.frame(bool = c(rep(FALSE, 2), rep(TRUE, 3), rep(FALSE, 2), rep(TRUE, 5),
FALSE, FALSE, rep(TRUE, 6), FALSE, FALSE, FALSE)) %>%
mutate(seq = data.table::rleid(bool)) %>%
group_by(seq) %>%
mutate(n = n()) %>%
ungroup() %>%
mutate(expected_output = c(4, 4, NA, NA, NA, 4, 4, rep(NA,5), 4, 4, rep(NA, 6), rep(6, 3)))

对于每个FALSE,我需要找到长度至少为4的最新TRUE序列。但是如果之前没有这样的序列(例如行 1:26:7),我们应该向前检查,即找到长度为 4 或以上的第一个序列观察后出现的结果。

ex 的最后一列包含预期输出。我怎样才能做到这一点(最好使用 tidyverse)?

编辑

使用 tidyverse 的解决方案仍然非常受欢迎。

最佳答案

以下内容应该使用基本 R 来工作。

function(col,min_seq =4)
{
end = c(which(c(col[-1],NA)!=col),length(col))
num = diff(c(0,end))
start = end-num+1
seq_n = seq_along(start)
v=col[end]

accept = num >= min_seq & v
st = start[accept]
sn = seq_n[accept]
en = end[accept]
en_ = en
en_[1]=1
place = rep(sn, diff(c(en_,length(col) + 1 ))) # If row with start of sequence is wanted instead of sequence number sn can be replaced with st
place[col]=NA

return(place)
}

关于r - 查找长度等于或大于 n 的最新 TRUE 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52296129/

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