मैंने इसका समाधान देखा है, लेकिन इसे (Fill NA in a time series only to a limited number) समूहों के लिए काम करने के लिए नहीं मिल सकता है, और सोचा कि एक neater होना चाहिए ऐसा करने का तरीका भी?na.locf fills maxgap को भरें, भले ही अंतर> maxgap, समूहों के साथ
dt <- data.table(ID = c(rep("A", 10), rep("B", 10)), Price = c(seq(1, 10, 1), seq(11, 20, 1)))
dt[c(1:2, 5:10), 2] <- NA
dt[c(11:13, 15:19) ,2] <- NA
dt
ID Price
1: A NA
2: A NA
3: A 3
4: A 4
5: A NA
6: A NA
7: A NA
8: A NA
9: A NA
10: A NA
11: B NA
12: B NA
13: B NA
14: B 14
15: B NA
16: B NA
17: B NA
18: B NA
19: B NA
20: B 20
मैं करना चाहते हैं क्या, है NA
रों आगे दोनों और सबसे हाल ही में गैर NA
मूल्य से वापस, लेकिन केवल एक करने के लिए को भरने के लिए:
मैं निम्नलिखित डीटी है कहो अधिकतम दो पंक्तियां आगे या पीछे।
मुझे समूह (आईडी) द्वारा इसे करने की भी आवश्यकता है।
मैं maxgap = x
आदि के साथ na.locf
/na.approx
उपयोग करने की कोशिश की है, लेकिन यह NA
रों भर नहीं है, जहां गैर NA
मूल्यों के बीच की खाई maxgap
से अधिक है। जबकि मैं इन्हें आगे और पीछे भरना चाहता हूं, भले ही गैर-NA
मानों के बीच का अंतर maxgap
से अधिक हो, लेकिन केवल दो पंक्तियों से अधिक हो।
अंतिम परिणाम चाहिए लग रहा है कि:
ID Price Price_Fill
1: A NA 3
2: A NA 3
3: A 3 3
4: A 4 4
5: A NA 4
6: A NA 4
7: A NA NA
8: A NA NA
9: A NA NA
10: A NA NA
11: B NA NA
12: B NA 14
13: B NA 14
14: B 14 14
15: B NA 14
16: B NA 14
17: B NA NA
18: B NA 20
19: B NA 20
20: B 20 20
हकीकत में, अपने डेटा सेट बड़े पैमाने पर है, और मैं भरने के लिए NA
आगे और अप करने के लिए 672 पंक्तियों के लिए वापस एस सक्षम होना चाहते हैं, लेकिन कोई अधिक समूह द्वारा।
धन्यवाद!
मुझे फिर से सहेजा @akrun हो जाएगा। धन्यवाद! – LyssBucks