मेरे सवाल यह है कि एक घटना पिछले कि आर में हुई बाद के दिनों की संख्या की गणना करने के नीचे डेटा का एक न्यूनतम उदाहरण है शामिल है:गणना दिनों आर
df <- data.frame(date=as.Date(c("06/07/2000","15/09/2000","15/10/2000","03/01/2001","17/03/2001","23/05/2001","26/08/2001"), "%d/%m/%Y"),
event=c(0,0,1,0,1,1,0))
date event
1 2000-07-06 0
2 2000-09-15 0
3 2000-10-15 1
4 2001-01-03 0
5 2001-03-17 1
6 2001-05-23 1
7 2001-08-26 0
एक द्विआधारी चर (घटना) में मूल्य 1 है जो दर्शाता है कि घटना हुई और 0 अन्यथा। बार-बार टिप्पणियों अलग अलग समय (date
) उम्मीद उत्पादन पिछले घटना के बाद से दिन के साथ इस प्रकार है (tae
) पर किया जाता है:
date event tae
1 2000-07-06 0 NA
2 2000-09-15 0 NA
3 2000-10-15 1 0
4 2001-01-03 0 80
5 2001-03-17 1 153
6 2001-05-23 1 67
7 2001-08-26 0 95
मैं इसी तरह की समस्याओं के उत्तर के लिए चारों ओर देखा है, लेकिन वे पता नहीं मेरी विशिष्ट समस्या मैं एक ऐसी ही पोस्ट (Calculate elapsed time since last event) से से विचारों को लागू करने की कोशिश की और नीचे निकटतम मैं समाधान के लिए मिल गया है है
library(dplyr)
df %>%
mutate(tmp_a = c(0, diff(date)) * !event,
tae = cumsum(tmp_a))
कौन सा उत्पादन है कि नीचे दिखाया गया पैदावार नहीं है काफी उम्मीद:
date event tmp_a tae
1 2000-07-06 0 0 0
2 2000-09-15 0 71 71
3 2000-10-15 1 0 71
4 2001-01-03 0 80 151
5 2001-03-17 1 0 151
6 2001-05-23 1 0 151
7 2001-08-26 0 95 246
इस या एक अलग दृष्टिकोण को ठीक करने के तरीके पर कोई सहायता की सराहना की जाएगी।
@ पास्कल यदि यह आसान बनाता है तो पहले तीन प्रविष्टियों के लिए 'एनए' के बजाय '0' के रूप में सेट करना ठीक होगा। – amo
@ पास्कल 'as.Date ('2001-01-03') - as.Date ('2000-10-15') 80 दिनों का समय अंतर। यह नंबर है '2000-10-15' पर हुई पिछली घटना के दिनों के दिनों से। समझ में आता है? – amo