Добавить новый столбец в data.frame на основе строк, сгруппированных по эпизодам определенной продолжительности дней.

df = read.table(text = 'ID  Day Count   Count_sum
33021   9535    3   29
33029   9535    3   29
34001   9535    3   29
32010   9534    2   29
33023   9534    2   29
45012   9533    4   29
47001   9533    4   29
48010   9533    4   29
50001   9533    4   29
49004   9532    1   29
9002    9531    2   29
67008   9531    2   29
40011   9530    1   29
42003   9529    2   29
42011   9529    2   29
55023   9528    1   29
40012   9527    3   29
43007   9527    3   29
47011   9527    3   29
52004   9526    4   29
52005   9526    4   29
52006   9526    4   29
52007   9526    4   29
19001   9525    1   29
57008   9524    5   29
57010   9524    5   29
58006   9524    5   29
58008   9524    5   29
59001   9524    5   29
58008   9537    3   27
66001   9537    3   27
68001   9537    3   27
54057   9536    1   27
33021   9535    3   27
33029   9535    3   27
34001   9535    3   27
32010   9534    2   27
33023   9534    2   27
32010   9534    2   27
33023   9534    2   27
45012   9533    4   27
47001   9533    4   27
48010   9533    4   27
50001   9533    4   27
45012   9533    4   27
47001   9533    4   27
48010   9533    4   27
50001   9533    4   27
49004   9532    1   27
49004   9532    1   27
9002    9531    2   27
67008   9531    2   27
9002    9531    2   27
67008   9531    2   27
40011   9530    1   27
40011   9530    1   27
42003   9529    2   27
42011   9529    2   27
42003   9529    2   27
42011   9529    2   27
55023   9528    1   27
55023   9528    1   27
40012   9527    3   27
43007   9527    3   27
47011   9527    3   27
40012   9527    3   27
43007   9527    3   27
47011   9527    3   27
52004   9526    4   27
52005   9526    4   27
52006   9526    4   27
52007   9526    4   27
52004   9526    4   27
52005   9526    4   27
52006   9526    4   27
52007   9526    4   27
19001   9525    1   27
57008   9524    5   27
57010   9524    5   27
58006   9524    5   27
58008   9524    5   27
59001   9524    5   27
65004   9523    1   27
49004   9532    1   26
9002    9531    2   26
67008   9531    2   26
40011   9530    1   26
42003   9529    2   26
42011   9529    2   26
55023   9528    1   26
40012   9527    3   26
43007   9527    3   26
47011   9527    3   26
52004   9526    4   26
52005   9526    4   26
52006   9526    4   26
52007   9526    4   26
19001   9525    1   26
57008   9524    5   26
57010   9524    5   26
58006   9524    5   26
58008   9524    5   26
59001   9524    5   26
65004   9523    1   26
75003   9522    1   26
76007   9521    4   26
77002   9521    4   26
77003   9521    4   26
78003   9521    4   26
48007   9538    2   25
48011   9538    2   25
58008   9537    3   25
66001   9537    3   25
68001   9537    3   25
54057   9536    1   25
54057   9536    1   25
33021   9535    3   25
33029   9535    3   25
34001   9535    3   25
33021   9535    3   25
33029   9535    3   25
34001   9535    3   25
32010   9534    2   25
33023   9534    2   25
32010   9534    2   25
33023   9534    2   25
45012   9533    4   25
47001   9533    4   25
48010   9533    4   25
50001   9533    4   25
45012   9533    4   25
47001   9533    4   25
48010   9533    4   25
50001   9533    4   25
45012   9533    4   25
47001   9533    4   25
48010   9533    4   25
50001   9533    4   25
49004   9532    1   25
49004   9532    1   25
49004   9532    1   25
9002    9531    2   25
67008   9531    2   25
9002    9531    2   25
67008   9531    2   25
9002    9531    2   25
67008   9531    2   25
9002    9531    2   25
67008   9531    2   25
40011   9530    1   25
40011   9530    1   25
40011   9530    1   25
40011   9530    1   25
42003   9529    2   25
42011   9529    2   25
42003   9529    2   25
42011   9529    2   25
42003   9529    2   25
42011   9529    2   25
42003   9529    2   25
42011   9529    2   25
55023   9528    1   25
55023   9528    1   25
55023   9528    1   25
55023   9528    1   25
40012   9527    3   25
43007   9527    3   25
47011   9527    3   25
40012   9527    3   25
43007   9527    3   25
47011   9527    3   25
40012   9527    3   25
43007   9527    3   25
47011   9527    3   25
40012   9527    3   25
43007   9527    3   25
47011   9527    3   25
52004   9526    4   25
52005   9526    4   25
52006   9526    4   25
52007   9526    4   25
52004   9526    4   25
52005   9526    4   25
52006   9526    4   25
52007   9526    4   25
52004   9526    4   25
52005   9526    4   25
52006   9526    4   25
52007   9526    4   25
19001   9525    1   25
19001   9525    1   25
19001   9525    1   25
57008   9524    5   25
57010   9524    5   25
58006   9524    5   25
58008   9524    5   25
59001   9524    5   25
57008   9524    5   25
57010   9524    5   25
58006   9524    5   25
58008   9524    5   25
59001   9524    5   25
65004   9523    1   25
65004   9523    1   25
75003   9522    1   25
75003   9522    1   25
76007   9521    4   25
77002   9521    4   25
77003   9521    4   25
78003   9521    4   25
74001   9520    1   25
39093   9539    2   24
41006   9539    2   24
48007   9538    2   24
48011   9538    2   24
58008   9537    3   24
66001   9537    3   24
68001   9537    3   24
54057   9536    1   24
33021   9535    3   24
33029   9535    3   24
34001   9535    3   24
32010   9534    2   24
33023   9534    2   24
45012   9533    4   24
47001   9533    4   24
48010   9533    4   24
50001   9533    4   24
49004   9532    1   24
9002    9531    2   24
67008   9531    2   24
40011   9530    1   24
40011   9530    1   24
42003   9529    2   24
42011   9529    2   24
42003   9529    2   24
42011   9529    2   24
42003   9529    2   24
42011   9529    2   24
55023   9528    1   24
55023   9528    1   24
55023   9528    1   24
40012   9527    3   24
43007   9527    3   24
47011   9527    3   24
40012   9527    3   24
43007   9527    3   24
47011   9527    3   24
52004   9526    4   24
52005   9526    4   24
52006   9526    4   24
52007   9526    4   24
52004   9526    4   24
52005   9526    4   24
52006   9526    4   24
52007   9526    4   24
19001   9525    1   24
19001   9525    1   24
57008   9524    5   24
57010   9524    5   24
58006   9524    5   24
58008   9524    5   24
59001   9524    5   24
57008   9524    5   24
57010   9524    5   24
58006   9524    5   24
58008   9524    5   24
59001   9524    5   24
65004   9523    1   24
65004   9523    1   24
75003   9522    1   24
75003   9522    1   24
76007   9521    4   24
77002   9521    4   24
77003   9521    4   24
78003   9521    4   24
76007   9521    4   24
77002   9521    4   24
77003   9521    4   24
78003   9521    4   24
74001   9520    1   24
74001   9520    1   24
33021   9518    1   24
55023   9528    1   22
40012   9527    3   22
43007   9527    3   22
47011   9527    3   22
52004   9526    4   22
52005   9526    4   22
52006   9526    4   22
52007   9526    4   22
19001   9525    1   22
57008   9524    5   22
57010   9524    5   22
58006   9524    5   22
58008   9524    5   22
59001   9524    5   22
65004   9523    1   22
75003   9522    1   22
76007   9521    4   22
77002   9521    4   22
77003   9521    4   22
78003   9521    4   22
74001   9520    1   22
33021   9518    1   22
40012   9527    3   21
43007   9527    3   21
47011   9527    3   21
52004   9526    4   21
52005   9526    4   21
52006   9526    4   21
52007   9526    4   21
19001   9525    1   21
57008   9524    5   21
57010   9524    5   21
58006   9524    5   21
58008   9524    5   21
59001   9524    5   21
65004   9523    1   21
75003   9522    1   21
76007   9521    4   21
77002   9521    4   21
77003   9521    4   21
78003   9521    4   21
74001   9520    1   21
33021   9518    1   21
52004   9526    4   18
52005   9526    4   18
52006   9526    4   18
52007   9526    4   18
19001   9525    1   18
57008   9524    5   18
57010   9524    5   18
58006   9524    5   18
58008   9524    5   18
59001   9524    5   18
65004   9523    1   18
75003   9522    1   18
76007   9521    4   18
77002   9521    4   18
77003   9521    4   18
78003   9521    4   18
74001   9520    1   18
33021   9518    1   18
19001   9525    1   14
57008   9524    5   14
57010   9524    5   14
58006   9524    5   14
58008   9524    5   14
59001   9524    5   14
65004   9523    1   14
75003   9522    1   14
76007   9521    4   14
77002   9521    4   14
77003   9521    4   14
78003   9521    4   14
74001   9520    1   14
33021   9518    1   14
57008   9524    5   13
57010   9524    5   13
58006   9524    5   13
58008   9524    5   13
59001   9524    5   13
65004   9523    1   13
75003   9522    1   13
76007   9521    4   13
77002   9521    4   13
77003   9521    4   13
78003   9521    4   13
74001   9520    1   13
33021   9518    1   13
65004   9523    1   8
75003   9522    1   8
76007   9521    4   8
77002   9521    4   8
77003   9521    4   8
78003   9521    4   8
74001   9520    1   8
33021   9518    1   8
75003   9522    1   7
76007   9521    4   7
77002   9521    4   7
77003   9521    4   7
78003   9521    4   7
74001   9520    1   7
33021   9518    1   7
76007   9521    4   6
77002   9521    4   6
77003   9521    4   6
78003   9521    4   6
74001   9520    1   6
33021   9518    1   6
74001   9520    1   2
33021   9518    1   2
33021   9518    1   1', header = TRUE)

Столбец Day показывает дни;
столбец Count показывает сумму ID в этот конкретный день;
столбец Count_sum показывает сумму ID по блокам из 12 дней, т. е. день + день -1 + день -2 + день -3 + День -4 + День -5 + День -6 + День -7 + День -8 + День -9 + День -10 + День -11.

например 1) Count_sum = 29, поскольку оно представляет собой сумму 3 (День 9535) + 2 (День 9534) + 4 (День 9533) + 1 (День 9532) + 2 (День 9531) + 1 (День 9530) + 2 (День 9529) + 1 (День 9528) + 3 (День 9527) + 4 (День 9526) + 1 (День 9525) + 5 (День 9524);

2) Count_sum = 27 из-за 3 (День 9537) + 1 (День 9536) + 3 (День 9535) + 2 (День 9534) + 4 (День 9533) + 1 (День 9532) + 2 (День 9531) + 1 (День 9530) + 2 День 9529) + 1 (День 9528) + 3 (День 9527) + 4 (День 9526);

и т.д. и т.п..

Что мне нужно сделать, так это добавить 5-й столбец (Episode_ID) в df, который группирует каждые 12-дневные эпизоды с уникальным значением от 1 до 21 (потому что в df есть 21 уникальный день).

Count_sum почти правильно группирует их, но может быть 2 или более 12-дневных эпизодов с одинаковыми значениями Count_sum, которые также могут перекрываться в течение нескольких дней.

Мой реальный data.frame содержит> 300 000 строк, и я также хотел бы получить код, который работает для 12-дневных эпизодов (как df), а также для других data.frames, сгруппированных по 2,3,4,5,6,7, 8,n дней.

Вот мой ожидаемый результат для df (12-дневные эпизоды):

ID     Day  Count Count_sum Episode_ID
33021   9535    3   29  1
33029   9535    3   29  1
34001   9535    3   29  1
32010   9534    2   29  1
33023   9534    2   29  1
45012   9533    4   29  1
47001   9533    4   29  1
48010   9533    4   29  1
50001   9533    4   29  1
49004   9532    1   29  1
9002    9531    2   29  1
67008   9531    2   29  1
40011   9530    1   29  1
42003   9529    2   29  1
42011   9529    2   29  1
55023   9528    1   29  1
40012   9527    3   29  1
43007   9527    3   29  1
47011   9527    3   29  1
52004   9526    4   29  1
52005   9526    4   29  1
52006   9526    4   29  1
52007   9526    4   29  1
19001   9525    1   29  1
57008   9524    5   29  1
57010   9524    5   29  1
58006   9524    5   29  1
58008   9524    5   29  1
59001   9524    5   29  1
58008   9537    3   27  2
66001   9537    3   27  2
68001   9537    3   27  2
54057   9536    1   27  2
33021   9535    3   27  2
33029   9535    3   27  2
34001   9535    3   27  2
32010   9534    2   27  2
33023   9534    2   27  2
45012   9533    4   27  2
47001   9533    4   27  2
48010   9533    4   27  2
50001   9533    4   27  2
49004   9532    1   27  2
9002    9531    2   27  2
67008   9531    2   27  2
40011   9530    1   27  2
42003   9529    2   27  2
42011   9529    2   27  2
55023   9528    1   27  2
40012   9527    3   27  2
43007   9527    3   27  2
47011   9527    3   27  2
52004   9526    4   27  2
52005   9526    4   27  2
52006   9526    4   27  2
52007   9526    4   27  2
32010   9534    2   27  3
33023   9534    2   27  3
45012   9533    4   27  3
47001   9533    4   27  3
48010   9533    4   27  3
50001   9533    4   27  3
49004   9532    1   27  3
9002    9531    2   27  3
67008   9531    2   27  3
40011   9530    1   27  3
42003   9529    2   27  3
42011   9529    2   27  3
55023   9528    1   27  3
40012   9527    3   27  3
43007   9527    3   27  3
47011   9527    3   27  3
52004   9526    4   27  3
52005   9526    4   27  3
52006   9526    4   27  3
52007   9526    4   27  3
19001   9525    1   27  3
57008   9524    5   27  3
57010   9524    5   27  3
58006   9524    5   27  3
58008   9524    5   27  3
59001   9524    5   27  3
65004   9523    1   27  3
49004   9532    1   26  4
9002    9531    2   26  4
67008   9531    2   26  4
40011   9530    1   26  4
42003   9529    2   26  4
42011   9529    2   26  4
55023   9528    1   26  4
40012   9527    3   26  4
43007   9527    3   26  4
47011   9527    3   26  4
52004   9526    4   26  4
52005   9526    4   26  4
52006   9526    4   26  4
52007   9526    4   26  4
19001   9525    1   26  4
57008   9524    5   26  4
57010   9524    5   26  4
58006   9524    5   26  4
58008   9524    5   26  4
59001   9524    5   26  4
65004   9523    1   26  4
75003   9522    1   26  4
76007   9521    4   26  4
77002   9521    4   26  4
77003   9521    4   26  4
78003   9521    4   26  4
48007   9538    2   25  5
48011   9538    2   25  5
58008   9537    3   25  5
66001   9537    3   25  5
68001   9537    3   25  5
54057   9536    1   25  5
33021   9535    3   25  5
33029   9535    3   25  5
34001   9535    3   25  5
32010   9534    2   25  5
33023   9534    2   25  5
45012   9533    4   25  5
47001   9533    4   25  5
48010   9533    4   25  5
50001   9533    4   25  5
49004   9532    1   25  5
9002    9531    2   25  5
67008   9531    2   25  5
40011   9530    1   25  5
42003   9529    2   25  5
42011   9529    2   25  5
55023   9528    1   25  5
40012   9527    3   25  5
43007   9527    3   25  5
47011   9527    3   25  5
54057   9536    1   25  6
33021   9535    3   25  6
33029   9535    3   25  6
34001   9535    3   25  6
32010   9534    2   25  6
33023   9534    2   25  6
45012   9533    4   25  6
47001   9533    4   25  6
48010   9533    4   25  6
50001   9533    4   25  6
49004   9532    1   25  6
9002    9531    2   25  6
67008   9531    2   25  6
40011   9530    1   25  6
42003   9529    2   25  6
42011   9529    2   25  6
55023   9528    1   25  6
40012   9527    3   25  6
43007   9527    3   25  6
47011   9527    3   25  6
52004   9526    4   25  6
52005   9526    4   25  6
52006   9526    4   25  6
52007   9526    4   25  6
19001   9525    1   25  6
45012   9533    4   25  7
47001   9533    4   25  7
48010   9533    4   25  7
50001   9533    4   25  7
49004   9532    1   25  7
9002    9531    2   25  7
67008   9531    2   25  7
40011   9530    1   25  7
42003   9529    2   25  7
42011   9529    2   25  7
55023   9528    1   25  7
40012   9527    3   25  7
43007   9527    3   25  7
47011   9527    3   25  7
52004   9526    4   25  7
52005   9526    4   25  7
52006   9526    4   25  7
52007   9526    4   25  7
19001   9525    1   25  7
57008   9524    5   25  7
57010   9524    5   25  7
58006   9524    5   25  7
58008   9524    5   25  7
59001   9524    5   25  7
65004   9523    1   25  7
75003   9522    1   25  7
9002    9531    2   25  8
67008   9531    2   25  8
40011   9530    1   25  8
42003   9529    2   25  8
42011   9529    2   25  8
55023   9528    1   25  8
40012   9527    3   25  8
43007   9527    3   25  8
47011   9527    3   25  8
52004   9526    4   25  8
52005   9526    4   25  8
52006   9526    4   25  8
52007   9526    4   25  8
19001   9525    1   25  8
57008   9524    5   25  8
57010   9524    5   25  8
58006   9524    5   25  8
58008   9524    5   25  8
59001   9524    5   25  8
65004   9523    1   25  8
75003   9522    1   25  8
76007   9521    4   25  8
77002   9521    4   25  8
77003   9521    4   25  8
78003   9521    4   25  8
74001   9520    1   25  8
39093   9539    2   24  9
41006   9539    2   24  9
48007   9538    2   24  9
48011   9538    2   24  9
58008   9537    3   24  9
66001   9537    3   24  9
68001   9537    3   24  9
54057   9536    1   24  9
33021   9535    3   24  9
33029   9535    3   24  9
34001   9535    3   24  9
32010   9534    2   24  9
33023   9534    2   24  9
45012   9533    4   24  9
47001   9533    4   24  9
48010   9533    4   24  9
50001   9533    4   24  9
49004   9532    1   24  9
9002    9531    2   24  9
67008   9531    2   24  9
40011   9530    1   24  9
42003   9529    2   24  9
42011   9529    2   24  9
55023   9528    1   24  9
40011   9530    1   24  10
42003   9529    2   24  10
42011   9529    2   24  10
55023   9528    1   24  10
40012   9527    3   24  10
43007   9527    3   24  10
47011   9527    3   24  10
52004   9526    4   24  10
52005   9526    4   24  10
52006   9526    4   24  10
52007   9526    4   24  10
19001   9525    1   24  10
57008   9524    5   24  10
57010   9524    5   24  10
58006   9524    5   24  10
58008   9524    5   24  10
59001   9524    5   24  10
65004   9523    1   24  10
75003   9522    1   24  10
76007   9521    4   24  10
77002   9521    4   24  10
77003   9521    4   24  10
78003   9521    4   24  10
74001   9520    1   24  10
42003   9529    2   24  11
42011   9529    2   24  11
55023   9528    1   24  11
40012   9527    3   24  11
43007   9527    3   24  11
47011   9527    3   24  11
52004   9526    4   24  11
52005   9526    4   24  11
52006   9526    4   24  11
52007   9526    4   24  11
19001   9525    1   24  11
57008   9524    5   24  11
57010   9524    5   24  11
58006   9524    5   24  11
58008   9524    5   24  11
59001   9524    5   24  11
65004   9523    1   24  11
75003   9522    1   24  11
76007   9521    4   24  11
77002   9521    4   24  11
77003   9521    4   24  11
78003   9521    4   24  11
74001   9520    1   24  11
33021   9518    1   24  11
55023   9528    1   22  12
40012   9527    3   22  12
43007   9527    3   22  12
47011   9527    3   22  12
52004   9526    4   22  12
52005   9526    4   22  12
52006   9526    4   22  12
52007   9526    4   22  12
19001   9525    1   22  12
57008   9524    5   22  12
57010   9524    5   22  12
58006   9524    5   22  12
58008   9524    5   22  12
59001   9524    5   22  12
65004   9523    1   22  12
75003   9522    1   22  12
76007   9521    4   22  12
77002   9521    4   22  12
77003   9521    4   22  12
78003   9521    4   22  12
74001   9520    1   22  12
33021   9518    1   22  12
40012   9527    3   21  13
43007   9527    3   21  13
47011   9527    3   21  13
52004   9526    4   21  13
52005   9526    4   21  13
52006   9526    4   21  13
52007   9526    4   21  13
19001   9525    1   21  13
57008   9524    5   21  13
57010   9524    5   21  13
58006   9524    5   21  13
58008   9524    5   21  13
59001   9524    5   21  13
65004   9523    1   21  13
75003   9522    1   21  13
76007   9521    4   21  13
77002   9521    4   21  13
77003   9521    4   21  13
78003   9521    4   21  13
74001   9520    1   21  13
33021   9518    1   21  13
52004   9526    4   18  14
52005   9526    4   18  14
52006   9526    4   18  14
52007   9526    4   18  14
19001   9525    1   18  14
57008   9524    5   18  14
57010   9524    5   18  14
58006   9524    5   18  14
58008   9524    5   18  14
59001   9524    5   18  14
65004   9523    1   18  14
75003   9522    1   18  14
76007   9521    4   18  14
77002   9521    4   18  14
77003   9521    4   18  14
78003   9521    4   18  14
74001   9520    1   18  14
33021   9518    1   18  14
19001   9525    1   14  15
57008   9524    5   14  15
57010   9524    5   14  15
58006   9524    5   14  15
58008   9524    5   14  15
59001   9524    5   14  15
65004   9523    1   14  15
75003   9522    1   14  15
76007   9521    4   14  15
77002   9521    4   14  15
77003   9521    4   14  15
78003   9521    4   14  15
74001   9520    1   14  15
33021   9518    1   14  15
57008   9524    5   13  16
57010   9524    5   13  16
58006   9524    5   13  16
58008   9524    5   13  16
59001   9524    5   13  16
65004   9523    1   13  16
75003   9522    1   13  16
76007   9521    4   13  16
77002   9521    4   13  16
77003   9521    4   13  16
78003   9521    4   13  16
74001   9520    1   13  16
33021   9518    1   13  16
65004   9523    1   8   17
75003   9522    1   8   17
76007   9521    4   8   17
77002   9521    4   8   17
77003   9521    4   8   17
78003   9521    4   8   17
74001   9520    1   8   17
33021   9518    1   8   17
75003   9522    1   7   18
76007   9521    4   7   18
77002   9521    4   7   18
77003   9521    4   7   18
78003   9521    4   7   18
74001   9520    1   7   18
33021   9518    1   7   18
76007   9521    4   6   19
77002   9521    4   6   19
77003   9521    4   6   19
78003   9521    4   6   19
74001   9520    1   6   19
33021   9518    1   6   19
74001   9520    1   2   20
33021   9518    1   2   20
33021   9518    1   1   21

Если вы видите выходные данные, в пределах Count_sum = 27 есть 2 отдельных эпизода, 4 эпизода для Count_sum = 25, 2 эпизода для Count_sum = 24 и т. д..

Столбец Episode_ID начинается от 1 до 21, где 1 – это эпизод с наибольшей группой Count_group, а если имеется 2 или более эпизодов с одинаковой группой Count_group, они должны быть упорядочены по убыванию дня = TRUE.

Вот что я пробовал из (обновление) Добавить индекс столбец в data.frame на основе двух столбцов, но не работает:

1)

df$Episode_ID <- cumsum(c(1,abs(diff(df$Day)) > 1) + c(0,diff(df$Count_sum) != 0) > 0)

2)

library(data.table)
Episode_ID <-setDT(df)[, if(Count_sum[1L] < .N) ((seq_len(.N)-1) %/% Count_sum[1L])+1  
                      else as.numeric(Count_sum), rleid(Count_sum)][, rleid(V1)]
df = df[, Episode_ID := Episode_ID]

Любое предложение?


person aaaaa    schedule 03.06.2017    source источник
comment
Что-то вроде вашего первого решения должно работать. Я бы сделал df$Episode_ID <- cumsum(c(1,diff(df$Day)>0 | diff(df$Count_sum)<0)). Проблема в том, что первые четыре столбца вашего ожидаемого вывода отличаются от вашего ввода (первое отличие в строке 39), поэтому неудивительно, что вывод не совпадает.   -  person Andrew Gustar    schedule 04.06.2017
comment
Это не работает. Count_sum = 27 имеет 2 эпизода: один начинается с 9537 дня (до 9526) и второй начинается с 9534 дня (до 9523). Действительно есть 54 строки с Count_sum = 27!!! Два кадра данных различаются, потому что входной df не упорядочен должным образом в пределах эпизодов, которые имеют одинаковое значение Count_sum с перекрывающимися днями!!!!! В 2 фреймах данных нет ошибок. Посмотрите вывод, и вы увидите 2 отдельных эпизода с Count_sum = 27. Это Episode_ID = 2 и Episode_ID = 3!   -  person aaaaa    schedule 04.06.2017
comment
Пожалуйста, внимательно прочитайте мой вопрос.   -  person aaaaa    schedule 04.06.2017


Ответы (1)


Должен признаться, я не до конца понял все детали, в частности, нет явного определения эпизода, и предоставленные данные кажутся мне не полностью соответствующими описанию того, как вычисляется Count_sum.

Тем не менее, я смог воспроизвести ожидаемые результаты.

Предлагаемое решение основано на наблюдении, что Day состоит из ряда монотонно убывающих последовательностей (предположительно это то, что ОП подразумевает под эпизодами). Таким образом, задача состоит в том, чтобы определить разрывы, в которых начинается новая последовательность, продвинуть счетчик последовательности и пронумеровать все последующие строки этой последовательности с этим идентификатором последовательности.

Это достигается за счет

library(data.table)   # CRAN version 1.10.4 used
setDT(expected)[, Sequence_ID := cumsum(Day - shift(Day, fill = -1L) > 0)]

Обратите внимание, что здесь второй набор данных, предоставленный OP, используется для демонстрации того, что вычисления соответствуют ожидаемым результатам. Например, первый разрыв происходит между строками 29 и 30:

expected[28:31]
#      ID  Day Count Count_sum Episode_ID Sequence_ID
#1: 58008 9524     5        29          1           1
#2: 59001 9524     5        29          1           1
#3: 58008 9537     3        27          2           2
#4: 66001 9537     3        27          2           2

Выражение распознало скачок с 9524 дня на 9537 день.

К сожалению, в конце есть несоответствие:

tail(expected, 11)
#       ID  Day Count Count_sum Episode_ID Sequence_ID
# 1: 74001 9520     1         7         18          18
# 2: 33021 9518     1         7         18          18
# 3: 76007 9521     4         6         19          19
# 4: 77002 9521     4         6         19          19
# 5: 77003 9521     4         6         19          19
# 6: 78003 9521     4         6         19          19
# 7: 74001 9520     1         6         19          19
# 8: 33021 9518     1         6         19          19
# 9: 74001 9520     1         2         20          20
#10: 33021 9518     1         2         20          20
#11: 33021 9518     1         1         21          20

OP назначил последнюю строку новому эпизоду, хотя дни по-прежнему монотонно убывают. Если это просто ошибка в предоставленных данных, мы закончили.

Если это сделано намеренно, то изменения в Count_sum должны учитываться при нумерации эпизодов с помощью удобной функции rleid() data.table:

expected[, new_Episode_ID := rleid(Sequence_ID, Count_sum)]
tail(expected, 5L)
#      ID  Day Count Count_sum Episode_ID Sequence_ID new_Episode_ID
#1: 74001 9520     1         6         19          19             19
#2: 33021 9518     1         6         19          19             19
#3: 74001 9520     1         2         20          20             20
#4: 33021 9518     1         2         20          20             20
#5: 33021 9518     1         1         21          20             21

Это также может быть записано более кратко как однострочный

expected[, new_Episode_ID := rleid(cumsum(Day - shift(Day, fill = -1L) > 0), Count_sum)]

Данные

expected <- structure(list(ID = c(33021L, 33029L, 34001L, 32010L, 33023L, 
45012L, 47001L, 48010L, 50001L, 49004L, 9002L, 67008L, 40011L, 
42003L, 42011L, 55023L, 40012L, 43007L, 47011L, 52004L, 52005L, 
52006L, 52007L, 19001L, 57008L, 57010L, 58006L, 58008L, 59001L, 
58008L, 66001L, 68001L, 54057L, 33021L, 33029L, 34001L, 32010L, 
33023L, 45012L, 47001L, 48010L, 50001L, 49004L, 9002L, 67008L, 
40011L, 42003L, 42011L, 55023L, 40012L, 43007L, 47011L, 52004L, 
52005L, 52006L, 52007L, 32010L, 33023L, 45012L, 47001L, 48010L, 
50001L, 49004L, 9002L, 67008L, 40011L, 42003L, 42011L, 55023L, 
40012L, 43007L, 47011L, 52004L, 52005L, 52006L, 52007L, 19001L, 
57008L, 57010L, 58006L, 58008L, 59001L, 65004L, 49004L, 9002L, 
67008L, 40011L, 42003L, 42011L, 55023L, 40012L, 43007L, 47011L, 
52004L, 52005L, 52006L, 52007L, 19001L, 57008L, 57010L, 58006L, 
58008L, 59001L, 65004L, 75003L, 76007L, 77002L, 77003L, 78003L, 
48007L, 48011L, 58008L, 66001L, 68001L, 54057L, 33021L, 33029L, 
34001L, 32010L, 33023L, 45012L, 47001L, 48010L, 50001L, 49004L, 
9002L, 67008L, 40011L, 42003L, 42011L, 55023L, 40012L, 43007L, 
47011L, 54057L, 33021L, 33029L, 34001L, 32010L, 33023L, 45012L, 
47001L, 48010L, 50001L, 49004L, 9002L, 67008L, 40011L, 42003L, 
42011L, 55023L, 40012L, 43007L, 47011L, 52004L, 52005L, 52006L, 
52007L, 19001L, 45012L, 47001L, 48010L, 50001L, 49004L, 9002L, 
67008L, 40011L, 42003L, 42011L, 55023L, 40012L, 43007L, 47011L, 
52004L, 52005L, 52006L, 52007L, 19001L, 57008L, 57010L, 58006L, 
58008L, 59001L, 65004L, 75003L, 9002L, 67008L, 40011L, 42003L, 
42011L, 55023L, 40012L, 43007L, 47011L, 52004L, 52005L, 52006L, 
52007L, 19001L, 57008L, 57010L, 58006L, 58008L, 59001L, 65004L, 
75003L, 76007L, 77002L, 77003L, 78003L, 74001L, 39093L, 41006L, 
48007L, 48011L, 58008L, 66001L, 68001L, 54057L, 33021L, 33029L, 
34001L, 32010L, 33023L, 45012L, 47001L, 48010L, 50001L, 49004L, 
9002L, 67008L, 40011L, 42003L, 42011L, 55023L, 40011L, 42003L, 
42011L, 55023L, 40012L, 43007L, 47011L, 52004L, 52005L, 52006L, 
52007L, 19001L, 57008L, 57010L, 58006L, 58008L, 59001L, 65004L, 
75003L, 76007L, 77002L, 77003L, 78003L, 74001L, 42003L, 42011L, 
55023L, 40012L, 43007L, 47011L, 52004L, 52005L, 52006L, 52007L, 
19001L, 57008L, 57010L, 58006L, 58008L, 59001L, 65004L, 75003L, 
76007L, 77002L, 77003L, 78003L, 74001L, 33021L, 55023L, 40012L, 
43007L, 47011L, 52004L, 52005L, 52006L, 52007L, 19001L, 57008L, 
57010L, 58006L, 58008L, 59001L, 65004L, 75003L, 76007L, 77002L, 
77003L, 78003L, 74001L, 33021L, 40012L, 43007L, 47011L, 52004L, 
52005L, 52006L, 52007L, 19001L, 57008L, 57010L, 58006L, 58008L, 
59001L, 65004L, 75003L, 76007L, 77002L, 77003L, 78003L, 74001L, 
33021L, 52004L, 52005L, 52006L, 52007L, 19001L, 57008L, 57010L, 
58006L, 58008L, 59001L, 65004L, 75003L, 76007L, 77002L, 77003L, 
78003L, 74001L, 33021L, 19001L, 57008L, 57010L, 58006L, 58008L, 
59001L, 65004L, 75003L, 76007L, 77002L, 77003L, 78003L, 74001L, 
33021L, 57008L, 57010L, 58006L, 58008L, 59001L, 65004L, 75003L, 
76007L, 77002L, 77003L, 78003L, 74001L, 33021L, 65004L, 75003L, 
76007L, 77002L, 77003L, 78003L, 74001L, 33021L, 75003L, 76007L, 
77002L, 77003L, 78003L, 74001L, 33021L, 76007L, 77002L, 77003L, 
78003L, 74001L, 33021L, 74001L, 33021L, 33021L), Day = c(9535L, 
9535L, 9535L, 9534L, 9534L, 9533L, 9533L, 9533L, 9533L, 9532L, 
9531L, 9531L, 9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 
9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 9524L, 
9524L, 9537L, 9537L, 9537L, 9536L, 9535L, 9535L, 9535L, 9534L, 
9534L, 9533L, 9533L, 9533L, 9533L, 9532L, 9531L, 9531L, 9530L, 
9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 9526L, 9526L, 9526L, 
9526L, 9534L, 9534L, 9533L, 9533L, 9533L, 9533L, 9532L, 9531L, 
9531L, 9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 9526L, 
9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 9524L, 9524L, 
9523L, 9532L, 9531L, 9531L, 9530L, 9529L, 9529L, 9528L, 9527L, 
9527L, 9527L, 9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 
9524L, 9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 9521L, 9521L, 
9538L, 9538L, 9537L, 9537L, 9537L, 9536L, 9535L, 9535L, 9535L, 
9534L, 9534L, 9533L, 9533L, 9533L, 9533L, 9532L, 9531L, 9531L, 
9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 9536L, 9535L, 
9535L, 9535L, 9534L, 9534L, 9533L, 9533L, 9533L, 9533L, 9532L, 
9531L, 9531L, 9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 
9526L, 9526L, 9526L, 9526L, 9525L, 9533L, 9533L, 9533L, 9533L, 
9532L, 9531L, 9531L, 9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 
9527L, 9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 
9524L, 9524L, 9523L, 9522L, 9531L, 9531L, 9530L, 9529L, 9529L, 
9528L, 9527L, 9527L, 9527L, 9526L, 9526L, 9526L, 9526L, 9525L, 
9524L, 9524L, 9524L, 9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 
9521L, 9521L, 9520L, 9539L, 9539L, 9538L, 9538L, 9537L, 9537L, 
9537L, 9536L, 9535L, 9535L, 9535L, 9534L, 9534L, 9533L, 9533L, 
9533L, 9533L, 9532L, 9531L, 9531L, 9530L, 9529L, 9529L, 9528L, 
9530L, 9529L, 9529L, 9528L, 9527L, 9527L, 9527L, 9526L, 9526L, 
9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 9524L, 9524L, 9523L, 
9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 9529L, 9529L, 9528L, 
9527L, 9527L, 9527L, 9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 
9524L, 9524L, 9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 9521L, 
9521L, 9520L, 9518L, 9528L, 9527L, 9527L, 9527L, 9526L, 9526L, 
9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 9524L, 9524L, 9523L, 
9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 9518L, 9527L, 9527L, 
9527L, 9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 
9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 
9518L, 9526L, 9526L, 9526L, 9526L, 9525L, 9524L, 9524L, 9524L, 
9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 
9518L, 9525L, 9524L, 9524L, 9524L, 9524L, 9524L, 9523L, 9522L, 
9521L, 9521L, 9521L, 9521L, 9520L, 9518L, 9524L, 9524L, 9524L, 
9524L, 9524L, 9523L, 9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 
9518L, 9523L, 9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 9518L, 
9522L, 9521L, 9521L, 9521L, 9521L, 9520L, 9518L, 9521L, 9521L, 
9521L, 9521L, 9520L, 9518L, 9520L, 9518L, 9518L), Count = c(3L, 
3L, 3L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 
3L, 3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 3L, 3L, 3L, 1L, 
3L, 3L, 3L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 2L, 2L, 
1L, 2L, 2L, 1L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 
5L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 4L, 4L, 4L, 2L, 2L, 3L, 3L, 
3L, 1L, 3L, 3L, 3L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 2L, 2L, 1L, 2L, 
2L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 2L, 2L, 4L, 4L, 4L, 4L, 1L, 
2L, 2L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 
4L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 4L, 4L, 
4L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 2L, 2L, 4L, 
4L, 4L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 4L, 4L, 
4L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 
5L, 5L, 1L, 1L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 3L, 3L, 3L, 4L, 4L, 
4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 4L, 4L, 4L, 1L, 1L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 
4L, 4L, 4L, 1L, 1L, 4L, 4L, 4L, 4L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 
1L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 
4L, 4L, 4L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 1L, 1L, 4L, 4L, 4L, 4L, 
1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 1L, 
1L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L), Count_sum = c(29L, 29L, 
29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 
29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 29L, 
29L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 
27L, 27L, 27L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 
26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 
26L, 26L, 26L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 
25L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 22L, 22L, 22L, 22L, 22L, 
22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 
22L, 22L, 22L, 22L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 18L, 
18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 
18L, 18L, 18L, 18L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 
14L, 14L, 14L, 14L, 14L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
13L, 13L, 13L, 13L, 13L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 6L, 6L, 6L, 6L, 6L, 6L, 2L, 2L, 1L), 
    Episode_ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
    7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
    8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
    9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 
    12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 
    12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 
    13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
    13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 14L, 
    14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 
    15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
    15L, 15L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
    16L, 16L, 16L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 18L, 
    18L, 18L, 18L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 19L, 19L, 
    20L, 20L, 21L)), .Names = c("ID", "Day", "Count", "Count_sum", 
"Episode_ID"), row.names = c(NA, -395L), class = "data.frame")
person Uwe    schedule 04.06.2017
comment
Объясните, пожалуйста, в чем отличия. С предоставленными данными ожидаемое Episode_ID точно совпадает с вычисленным new_Episode_ID. Спасибо. - person Uwe; 04.06.2017
comment
Жаль, тем более, что вы уже потратили много времени на написание этого и связанных с ним вопросов. У меня всегда было ощущение, что ваш вопрос является частью более крупной проблемы, которую вы еще полностью не раскрыли. Тем не менее, я потратил два часа своего времени на то, чтобы найти решение вашего конкретного вопроса и написать ответ. Вы должны уважать это. См. здесь. - person Uwe; 04.06.2017
comment
Между данными, которые вы предоставили, и моим результатом нет никаких различий expected[Episode_ID != new_Episode_ID] Empty data.table (0 rows) of 6 cols: ID,Day,Count,Count_sum,Episode_ID,new_Episode_ID - person Uwe; 04.06.2017
comment
Привет, ваш код отлично работает с вашим входным фреймом данных (то есть ожидаемым), который отличается от моего входного df, и поэтому код не работает. Скажите, пожалуйста, как я могу заказать «df» как «ожидаемый» (но не вручную!). Благодарность - person aaaaa; 04.06.2017
comment
Я также только что заметил, что вы вручную добавили столбец Episode_ID к ожидаемому .... Я имею в виду ... Я мог бы сделать это и самостоятельно с помощью df ... но data.frame, с которым я работаю, получил > 300 000 ряды.......... - person aaaaa; 04.06.2017
comment
Кажется, у меня есть идея, что происходит не так: два набора данных, которые вы предоставили в своем вопросе df и ожидаемом df, отсортированы по-разному. Поскольку алгоритм ищет разрывы в монотонно убывающей последовательности в Day, разные порядки сортировки приведут к разным результатам. - person Uwe; 05.06.2017