मैं एक डेटा सेट के लिए "अंतिम निरीक्षण कैर्री फॉरवर्ड" लागू करना चाहता हूं, जिस पर मैं काम कर रहा हूं जिस पर इसके अंत में मूल्य गुम हैं।अंतिम निरीक्षण एक डेटा फ्रेम में आगे बढ़े?
LOCF <- function(x)
{
# Last Observation Carried Forward (for a left to right series)
LOCF <- max(which(!is.na(x))) # the location of the Last Observation to Carry Forward
x[LOCF:length(x)] <- x[LOCF]
return(x)
}
# example:
LOCF(c(1,2,3,4,NA,NA))
LOCF(c(1,NA,3,4,NA,NA))
अब इस सरल वैक्टर के लिए महान काम करता है:
यहाँ एक सरल यह करने के लिए (सवाल यह बाद) कोड है। लेकिन अगर मैं डेटा फ्रेम पर इसे आजमाने और उपयोग करने के लिए कहता हूं:
a <- data.frame(rep("a",4), 1:4,1:4, c(1,NA,NA,NA))
a
t(apply(a, 1, LOCF)) # will make a mess
यह मेरे डेटा फ्रेम को एक चरित्र मैट्रिक्स में बदल देगा।
क्या आप डेटा.फ्रेम पर LOCF करने के तरीके के बारे में सोच सकते हैं, इसे मैट्रिक्स में बदल दिए बिना? (मैं छोरों इस्तेमाल कर सकते हैं और गंदगी को दूर करने के इस तरह के, लेकिन एक और अधिक सुरुचिपूर्ण समाधान के लिए प्यार होता है)
चीयर्स,
ताल
+1 और निश्चित रूप से rseek.org तुरंत पहले परिणाम के रूप में इस पूरी करता है। –
मेरी बोली लगाने के लिए मेरी बोली - धन्यवाद शेन। लेकिन मुझे डर है कि यह नौकरी नहीं करता है। (यह प्रत्येक पंक्ति के बजाय कॉलम 3 भरता है) –
यदि आप '[r] locf' के लिए stackoverflow.com खोजते हैं तो आपको यह भी मिल सकता है। – Shane