这是更新/后续this https://stackoverflow.com/questions/55639062/detecting-sequence-by-group-and-compute-new-variable-for-the-subset问题。答案概述了他们不符合新的要求。
我正在寻找一种有效的方法(data.table
?)为每个构建两个新的措施ID
.
措施1和措施2需要满足以下条件:
条件一:
查找一个由三行组成的序列,其中:
- 首先
count > 0
- 第二个“计数> 1”和
- 第三
count ==1
.
措施 1 的条件 2:
- 取元素的值
product
序列的第三行是:
- in the
product
序列的第二行和
- 不在
stock
按顺序排列的第一行。
措施 2 的条件 2:
- 取元素的值
product
序列的最后一行是:
- 不在
product
序列第二行的
- 不在
stock
按顺序排列的第一行。
Data:
df2 <- data.frame(ID = c(1,1,1,1,1,1,1,2,2,2,3,3,3,3),
seqs = c(1,2,3,4,5,6,7,1,2,3,1,2,3,4),
count = c(2,1,3,1,1,2,3,1,2,1,3,1,4,1),
product = c("A", "B", "C", "A,C,E", "A,B", "A,B,C", "D", "A", "B", "A", "A", "A,B,C", "D", "D"),
stock = c("A", "A,B", "A,B,C", "A,B,C,E", "A,B,C,E", "A,B,C,E", "A,B,C,D,E", "A", "A,B", "A,B", "A", "A,B,C", "A,B,C,D", "A,B,C,D"))
> df2
ID seqs count product stock
1 1 1 2 A A
2 1 2 1 B A,B
3 1 3 3 C A,B,C
4 1 4 1 A,C,E A,B,C,E
5 1 5 1 A,B A,B,C,E
6 1 6 2 A,B,C A,B,C,E
7 1 7 3 D A,B,C,D,E
8 2 1 1 A A
9 2 2 2 B A,B
10 2 3 1 A A,B
11 3 1 3 A A
12 3 2 1 A,B,C A,B,C
13 3 3 4 D A,B,C,D
14 3 4 1 D A,B,C,D
所需的输出如下所示:
ID seq1 seq2 seq3 measure1 measure2
1: 1 2 3 4 C E
2: 2 1 2 3
3: 3 2 3 4 D
你会如何编码?