में प्रत्येक डुप्लिकेट मान में एक से बढ़ोतरी, मैं डुप्लिकेट मानों को खोजने के लिए आर में उचित तरीके खोजने की कोशिश कर रहा हूं, और आईडी द्वारा समूहित प्रत्येक बाद के डुप्लिकेट मान में मान 1 जोड़ सकता हूं। उदाहरण के लिए:आर
data=data.table(id=c('1','1','1','1','1','2','2','2'),value=c(95,100,101,101,101,20,35,38))
data$new_value <- ifelse(data[,data$value] == lag(data$value,1), lag(data$value,1)+1 ,data$value)
data$desired_value <- c(95,100,101,102,103,20,35,38)
का उत्पादन:
id value new_value desired_value
1: 1 95 NA 95
2: 1 100 100 100
3: 1 101 101 101
4: 1 101 102 102
5: 1 101 102 103
6: 2 20 20 20
7: 2 35 35 35
8: 2 38 38 38
मैं ifelse के साथ ऐसा करने की कोशिश की लेकिन यह रिकर्सिवली काम नहीं करता है तो यह केवल निम्न पंक्ति पर लागू होता है, और नहीं किसी भी बाद पंक्तियों। फ़ंक्शन के परिणाम में मुझे value
में पहला मान खोने का परिणाम मिला।
मैंने make.names
या make.unique
के साथ वर्ण चर के साथ उदाहरण देखे हैं, लेकिन एक डुप्लिकेट किए गए संख्यात्मक मान के लिए समाधान नहीं ढूंढ पाए हैं।
पृष्ठभूमि: मैं एक जीवित विश्लेषण कर रहा हूं और मुझे लगता है कि मेरे डेटा के साथ स्टॉप टाइम्स समान हैं, इसलिए मुझे इसे 1 जोड़कर अद्वितीय बनाना होगा (स्टॉप टाइम्स सेकंड में हैं)।
@akrun बिना और @thelatemail मैं देख रहा हूँ
base R
उपयोग कर सकते हैं। तो यहां हम समूह द्वारा "बाय" का उपयोग करते हैं, जो कि उस समूह में अवलोकनों की कुल संख्या को संभालता है और बन जाता है। '101' आईडी' 1' के भीतर 3 बार दिखाई देने के साथ, एन = 3, या '(0: (3-1))'। इसके परिणामस्वरूप 'मान + (0: 2) ', या बस' मान + 0, मान +1, मान + 2' होता है। धन्यवाद! –