हालांकि सवाल "पिछली आवृत्ति" के लिए कहा इस नुकसान यह है कि पहले Product_Weight
किसी भी Product_id
में NA
तो यह भले ही हम बाद में एक Product_id
से Product_Weight
जानता था इसलिए बजाय का उपयोग करने में भरा नहीं कर सकता है कर रहे थे जा होता पिछली घटना हम सभी गैर-एनएएस का मतलब उसी Product_id
के साथ लेते हैं। चूंकि ये सब एक जैसा होना चाहिए उनका मतलब उनका सामान्य मूल्य है।
तुम सच में पिछली आवृत्ति का उपयोग Prev
समारोह चाहते हैं, तो जहां:
Prev <- function(x) na.locf(x, na.rm = FALSE)
में na.aggregate
के स्थान पर (1) और (3) और (2) का उपयोग नहीं करते।
निम्न समाधानों फायदे है कि वे सभी के लिए है:
संशोधित करें
पहले समाधान में कोड की केवल एक पंक्ति होने के अतिरिक्त लाभ है (साथ ही library
कथन) और दूसरे समाधान में किसी भी पैकेज का उपयोग न करने का अतिरिक्त लाभ है।
1) चिड़ियाघर :: na.aggregate हम चिड़ियाघर पैकेज (जो गैर NAS की औसत के साथ सभी NAS की जगह में na.aggregate
का उपयोग करें) और हम एक Product_id
के लिए अलग से Product_Weight
करने के लिए इसे लागू होते हैं।
library(zoo)
transform(DF, Product_Weight = ave(Product_Weight, Product_id, FUN = na.aggregate))
दे रही है:
Product_id Product_Weight Product_Name Shop_Name
1 A 10 xxxx Walmart
2 B 12 yyyy Target
3 C 11 zzzz Target
4 A 10 xxxx Walmart
5 C 11 zzzz Target
2) कोई पैकेज नहीं वैकल्पिक रूप से na.aggregate
के स्थान पर Mean
का उपयोग जहां Mean
के रूप में परिभाषित किया गया है:
Mean <- function(x) replace(x, is.na(x), mean(x, na.rm = TRUE))
3) dplyr/चिड़ियाघर जोड़ें पंक्ति संख्या, Product_id
द्वारा समूह, भरें Mean
नीचे या दिखाया गया है या तो na.aggregate
का उपयोग कर से पहले समाधान के रूप में NAS, वापस मूल क्रम में व्यवस्था और पंक्ति संख्या निकालें:
library(dplyr)
library(zoo)
DF %>%
mutate(row = row_number()) %>%
group_by(Product_id) %>%
mutate(Product_Weight = na.aggregate(Product_Weight)) %>%
ungroup() %>%
arrange(row) %>%
select(-row)
नोट:
Lines <- " Product_id Product_Weight Product_Name Shop_Name
A 10 xxxx Walmart
B 12 yyyy Target
C 11 zzzz Target
A NA xxxx Walmart
C NA zzzz Target"
DF <- read.table(text = Lines, header = TRUE)
: इस इनपुट
DF
के लिए इस्तेमाल किया गया था
क्या ये वजन हमेशा सेट होते हैं ताकि उत्पाद_आईडी - उत्पाद_नाम संयोजन वही वज़न लौटाए? – lmo
@ एलएमओ हाँ वे हैं। – Avis
एनए की जगह बदलने के बारे में एक और प्रश्नोत्तर: http://stackoverflow.com/questions/32694313/handle-continous-missing-values-in-time-series-data – Jaap