gpt4 book ai didi

替换长度 > 2 的相同值序列

转载 作者:行者123 更新时间:2023-12-01 11:20:22 24 4
gpt4 key购买 nike

我有一个测量变量的传感器,当没有连接时,它总是返回最后看到的值而不是 NA。因此,在我的向量中,我想用估算值替换这些相同的值(例如使用 na.approx)。

set.seed(3)
vec <- round(runif(20)*10)
#### [1] 2 8 4 3 6 6 1 3 6 6 5 5 5 6 9 8 1 7 9 3

但我只想要大于 2 的序列(3 个或更多相同的数字),因为 2 个相同的数字可以自然出现。 (在前面的示例中,要标记的序列是 5 5 5)

我试着用 diff 来标记我相同的点 (c(0, diff(vec) == 0)) 但我不知道怎么做处理 length == 2 条件...

编辑我的预期输出可能是这样的:

####  [1] 2 8 4 3 6 6 1 3 6 6 5 NA NA 6 9 8 1 7 9 3

(3个或更多的序列的第二个相同值也很可能是错误值)

谢谢

最佳答案

你可以使用lag函数

set.seed(3)
> vec <- round(runif(20)*10)
>
> vec
[1] 2 8 4 3 6 6 1 3 6 6 5 5 5 6 9 8 1 7 9 3
>
> vec[vec == lag(vec) & vec == lag(vec,2)] <- NA
>
> vec
[1] 2 8 4 3 6 6 1 3 6 6 5 5 NA 6 9 8 1 7 9 3
>

关于替换长度 > 2 的相同值序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44574305/

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