나는 this question을 물었고 이벤트 이전에 음수를 생성하는 데 완벽한 다음 솔루션을 얻었습니다.이벤트가 발생한 후 새 열의 숫자를 생성합니다.
library(data.table)
setDT(df1)[, event_lead:=-(.N:1) ,cumsum(event == 1)
][, event_lead := event_lead* (!event)]
df1
# var1 var2 event event_lead
# 1: 0.658 72.193 0 -5
# 2: 0.641 70.217 0 -4
# 3: 0.641 40.173 0 -3
# 4: 0.652 52.687 0 -2
# 5: 0.531 50.652 0 -1
# 6: 0.529 39.497 1 0
# 7: 0.651 29.291 0 -4
# 8: 0.634 59.548 0 -3
# 9: 0.711 51.925 0 -2
#10: 0.635 75.772 0 -1
#11: 0.710 53.378 1 0
#12: 0.660 87.744 0 -3
#13: 0.540 62.547 0 -2
#14: 0.618 38.050 0 -1
#15: 0.602 60.978 1 0
이제이 코드를 조정하여 이벤트 이후에 양수가 다른 열을 갖도록하려고합니다.
> setDT(df1)[, event_lead:=-(.N:1) ,cumsum(event == 1)
+ ][, event_lead := event_lead* (!event)]
> setDT(df1)[, event_follow:=+(1:.N) ,cumsum(event == 1)
+ ][, event_follow := event_follow* (!event)]
> df1
var1 var2 event event_lead event_follow
1: 0.658 72.193 0 -5 1
2: 0.641 70.217 0 -4 2
3: 0.641 40.173 0 -3 3
4: 0.652 52.687 0 -2 4
5: 0.531 50.652 0 -1 5
6: 0.529 39.497 1 0 0
7: 0.651 29.291 0 -4 2
8: 0.634 59.548 0 -3 3
9: 0.711 51.925 0 -2 4
10: 0.635 75.772 0 -1 5
11: 0.710 53.378 1 0 0
12: 0.660 87.744 0 -3 2
13: 0.540 62.547 0 -2 3
14: 0.618 38.050 0 -1 4
15: 0.602 60.978 1 0 0
왜 event_follow
에서 0
후 1를 건너 않으며, 나는 그것을 어떻게 해결할 수 있습니까?
어느 것이 입력 데이터 세트입니까 – akrun
입력이 [이 첫 번째 질문]과 동일 (http://stackoverflow.com/questions/38387475/generate-numbers-before-an-event) – pyne
고마워, 그게'event_follow' 또는 당신이 얻은 것으로 예상되는 출력이다. 코드를 변경하고 싶습니다. 그것이 후자 인 경우에, 예상 된 것을 보여주는 것이 낫다 – akrun