gpt4 book ai didi

r - 在数据框中查找重复项并更改标识值

转载 作者:行者123 更新时间:2023-12-03 23:27:03 26 4
gpt4 key购买 nike

我可能遇到了一个愚蠢且易于解决的问题。

我有一个触发器,当按下(和)计算机键时代码为 1,松开键时代码为 0。我需要识别每个触发器的开始和停止(即第一个和最后一个 1)并将中间的 1 替换为 0。数据记录是时间(连续,t 下面)和值(皮肤电事件,值)。为了更快地处理数据,我需要对其进行预处理,即识别感兴趣窗口的开头和结尾对应的1。

请找到代码示例:

t <- seq(0.1,10,0.1)

value <- rnorm(length(t), mean=1, sd=2)

trig <- c(rep(0,20),rep(c(rep(1,10), rep(0,10)),4))

id <- 1:length(t)

预期的输出是
trig_result <- c(rep(0,20), rep(c(1, rep(0,8),1,rep(0,10)),4)); length(trig_result)

使用重复只识别第一个 1 和最后一个,而不识别中间值。我看过类似的帖子,但没有一个能解决识别问题。

我查看了 dplyr 函数,但我无法弄清楚如何替换 0 中的 1 以结束预处理阶段。
对你的帮助表示感谢。

真诚的你,

最佳答案

这是带有 rle 的基本 R 解决方案和 cumsum :

result <- rep(0,length(trig))
result[head(cumsum(rle(trig)$lengths)+c(1,0),-1)] <- 1
all.equal(result,trig_result)
#[1] TRUE

请注意,此解决方案假定数据以 0 开头和结尾。 .

关于r - 在数据框中查找重复项并更改标识值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62417452/

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