r - Mark start and end of groups -
एक जहां मेरे पास यह मानते हुए कि संपादित करें: @ डेविड एरबेर्ग के प्रति सुझाव: आप निश्चित तौर पर एक बार में आरंभ और अंत को परिभाषित कर सकते हैं। यह थोड़ी तेजी से होनी चाहिए, हालांकि मुझे इसे पढ़ने में थोड़ा अधिक मुश्किल लगता है। EDIT2: क्या हो रहा है की कुछ और विवरण: विक्रेता और खरीदार के प्रत्येक जोड़ी के लिए पहला अवलोकन हमेशा एक व्यावसायिक संबंध की शुरुआत होगी, इसलिए data.table फ़ॉर्म की संरचना
पर विचार करें विक्रेता खरीदार महीने 1: 50536344 61961225 1993-01-01 2: 50536344 61961225 1993-02-01 3: 50536344 61961225 1993-04-01 4: 50536344 61961225 1993-05-01 5: 50536344 61961225 1993-06-01
(खरीदार, विक्रेता) समय के साथ जोड़े हैं मैं हर जोड़ी के लिए शुरुआत और अंत को चिह्नित करना चाहता हूं। उदाहरण के लिए, हम देखते हैं कि जनवरी से फरवरी तक एक जोड़ी थी, मार्च में कोई भी नहीं, और अप्रैल से जून तक एक था। इसलिए, निम्नलिखित अपेक्षित आउटपुट होंगे:
विक्रेता खरीदार का महीना शुरू होता है 1: 50536344 61961225 1993-01-01 सही गलत 2: 50536344 61961225 1993-02-01 झूठी सच्ची 3: 50536344 61961225 1993-04-01 सही गलत 4: 50536344 61961225 1993-05-01 झूठी झूठी 5: 50536344 61961225 1993-06-01 झूठी सच्ची
माह में
दिनांक वर्ग (या
POSIXt ,
आईडीटेटीम या
diff फ़ंक्शन का उपयोग कर सकते हैं ऐसा करें
# सॉर्ट डेटाटबल सेटकीव (डीटी, सी ("विक्रेता", "खरीदार", "महीने")) # परिभाषित डीटी [प्रारंभ करें: प्रारंभ: = सी (सच, अंतर (महीने) ) (31)), द्वारा = सूची (विक्रेता, खरीदार)]
dt [, ": =" (start = c (TRUE, diff (month)> 31), end = c (diff (month)> 31, TRUE)) द्वारा, = सूची (विक्रेता, खरीदार)]
प्रारंभ = सी (सच, ...) । इसके बाद एक और अवलोकन एक व्यावसायिक संबंध की शुरुआत होगी, अगर केवल तभी एक महीने (31 दिन) से बड़ा हो, तो
diff (month) & gt; 31 । दो चीजों को एक साथ लाना, आपको
c (TRUE, diff (महीने)> 31) मिलता है। एक समान तर्क अंत के लिए लागू होता है, जहां आपको पिछले एक के बजाय अगले अवलोकन से तुलना करना पड़ता है।
Comments
Post a Comment