[英]Detecting the pattern of a binary sequence and extend the sequence with same pattern in R
我正在寻找一种解决方案来有效捕获值仅为 0 和 1 的序列模式。数据如下所示:
id date occurrence
<chr> <date> <dbl>
1 10010020 2019-08-01 0
2 10010020 2019-08-02 0
3 10010020 2019-08-03 1
4 10010020 2019-08-04 0
5 10010020 2019-08-05 0
6 10010020 2019-08-06 1
7 10010020 2019-08-07 0
8 10010020 2019-08-08 0
9 10010020 2019-08-09 1
10 10010020 2019-08-10 0
我想将数据框扩展为:
<chr> <date> <dbl>
1 10010020 2019-08-01 0
2 10010020 2019-08-02 0
3 10010020 2019-08-03 1
4 10010020 2019-08-04 0
5 10010020 2019-08-05 0
6 10010020 2019-08-06 1
7 10010020 2019-08-07 0
8 10010020 2019-08-08 0
9 10010020 2019-08-09 1
10 10010020 2019-08-10 0
11 10010020 2019-08-11 0
12 10010020 2019-08-12 1
13 10010020 2019-08-13 0
14 10010020 2019-08-14 0
15 10010020 2019-08-15 1
16 10010020 2019-08-16 0
17 10010020 2019-08-17 0
18 10010020 2019-08-18 1
19 10010020 2019-08-19 0
20 10010020 2019-08-20 0
21 10010020 2019-08-21 1
22 10010020 2019-08-22 0
23 10010020 2019-08-23 0
24 10010020 2019-08-24 1
25 10010020 2019-08-25 0
26 10010020 2019-08-26 0
27 10010020 2019-08-27 1
28 10010020 2019-08-28 0
29 10010020 2019-08-29 0
30 10010020 2019-08-30 1
我知道标题可能是我还没有找到答案的原因,所以任何关于好的问题描述的建议都将受到欢迎。
干杯
这是一个 function,它将在 0 和 1 的向量中找到最短的重复序列......
find_rep <- function(x) {
head(x, which(sapply(1:(length(x) - 1),
function(z) sum(abs(x[-(1:z)] - head(x, -z)))
) == 0)[1])
}
find_rep(c(0,0,1,1,0,0,0,1,1,0,0,0))
[1] 0 0 1 1 0
find_rep(c(0,1,0,0,1,0,0,1))
[1] 0 1 0
它将x
与自身的移位版本进行比较,并返回差异为零的最短部分。
然后,您可以使用rep(y, length.out = n)
之类的内容重复该序列,其中y
是find_rep(x)
, n
是数据中的行数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.