में अन्य कॉलम में मानों के आधार पर गिनती कॉलम जोड़ने के लिए मेरे पास अपेक्षाकृत बड़ा डेटासेट (16,000+ x ~ 31) है। दूसरे शब्दों में, यह काफी बड़ा है कि मैं एक्सेल में लाइन द्वारा इसे लाइन में हेरफेर नहीं करना चाहता हूं। डेटा इस रूप में है:आर
block site day X1 X2
1 1 1 0.4 5.1
1 1 2 0.8 1.1
1 1 3 1.1 4.2
1 2 1 ... ...
1 2 2
1 2 3
2 3 1
2 3 2
2 3 3
2 4 1
2 4 2
2 4 3
आप देख सकते हैं, साइट गिनती निरंतर है, लेकिन मैं एक स्तंभ जहां साइट संख्या प्रत्येक ब्लॉक के साथ रीसेट करता है चाहते हैं। उदाहरण के लिए, मैं इस नीचे की तरह कुछ करना चाहते हैं:
block site day X1 X2 site2
1 1 1 0.4 5.1 1
1 1 2 0.8 1.1 1
1 1 3 1.1 4.2 1
1 2 1 ... ... 2
1 2 2 2
1 2 3 2
2 3 1 1
2 3 2 1
2 3 3 1
2 4 1 2
2 4 2 2
2 4 3 2
मैं आर समारोह RLE उपयोग करने के बारे में सोच रहा था, लेकिन यकीन है कि अगर यह क्योंकि दिन के साथ जटिलताओं का काम करेंगे नहीं हूँ। अन्यथा, मैं की तरह कुछ की कोशिश करेंगे:
Data$site2 <- sequence(rle(Data$block)$lengths)
किसी को भी एक स्तंभ गिनती (अनुक्रम) प्रत्येक ब्लॉक के भीतर साइटों की संख्या जोड़ने के लिए किसी भी सुझाव हैं? यदि यह मदद करता है, तो प्रत्येक साइट के लिए रिकॉर्ड किए गए दिनों की संख्या (263) है लेकिन प्रति ब्लॉक की एक अलग संख्या साइटें हैं।
ddply(df,.(block),transform,
site1 = rep(1:length(unique(site)),
times = rle(site)$lengths))
या एक से थोड़ा बरसाती कोट संस्करण:
धन्यवाद, यह पूरी तरह से काम किया। मैंने पहले प्लीयर देखा है लेकिन कभी इसका इस्तेमाल नहीं किया। ddply सही है, मैं वास्तव में मैट्रिक्स को तोड़ने के लिए temped था, दिनों में reshape (= चौड़ा) का उपयोग करें, rle (साइट) लागू करें और फिर reshape (= लंबा) को फिर से प्रयास करने का प्रयास करें। मुझे नहीं पता कि यह काम करेगा या नहीं, लेकिन मुझे लगा कि ऐसा करने के लिए लगभग 1000 आसान तरीके थे। मुझे डीपीडीपी समाधान पसंद है। एक बार फिर धन्यवाद। – djhocking
अच्छा है, बस एक ही समस्या पर ddply विकल्प का प्रयास किया और पूरी तरह से पहली बार काम किया – Ell