/ / भारित औसत या सरल औसत से कॉलम को अलग करें यदि वजन गायब है - आर, कुल

वज़न कम होने पर भारित औसत या साधारण औसत से कुल कॉलम - आर, कुल

मैं कुछ स्तंभों को एकत्र करने की कोशिश कर रहा हूंडेटा ढांचा। मेरे डेटा फ्रेम में प्रत्येक स्तंभ एक उद्योग के लिए और प्रत्येक पंक्ति किसी विशेष देश के लिए है। इसके बाद मैं भारित औसत द्वारा कुछ स्तंभों को एकत्र करना चाहूंगा। हालांकि एक छोटे से हिस्से के लिए वजन गायब हैं। इस मामले में मैं चाहूंगा कि आर इस देश के लिए एक साधारण औसत से उद्योगों को एकत्र करेगा। डेटा फ़्रेम से एक स्निपेट (ये अन्य कॉलमों के लिए अनुकरणीय भार हैं)

|   Mining   | Food     |  weight85| weight90.93|
|:----------:|--  -----:|---------:|------------|
|   0.9608709| 0.8839236| 0.2738525|   0.1943577|
|   0.6445055| 0.8483874| 0.2958678|   0.1043844|
|   0.6977353| 0.9449249|        NA|          NA|
|   0.7970192| 0.5941056| 0.2324452|   0.1904089|
|   0.7261323| 0.6333187|        NA|          NA|
|   0.9959837| 1.0101725| 0.3872314|   0.1628354|

जब मैं लापता मानों की समस्या को हल करता हूं तो मैं भारित औसत की गणना करता हूं:

  GGPC$mining.weighted <- GGPC$weight85*GGPC$Mining
GGPC$food.weighted  <- (1-GGPC$weight85)*GGPC$food
GGPC$food.mining<- rowSums(GGPC[,54:55], na.rm=T)

उत्तर:

जवाब के लिए 0 № 1

उत्तर जो एमटीएस प्रदान करता है, उस पर निर्माण। मैं एक समाधान के लिए निम्नलिखित समाधान के साथ आया था, जो एक पंक्ति के लिए गणना करता है या तो सरल औसत या भारित औसत।

 if(sum(is.na(DF[1,37])>0)) {1/2*DF[1,5]+1/2*DF[1,6]}
else  { DF[1,37]*GGPC[1,5]+(1-DF[1,37])*DF[1,6]}

और डेटा फ्रेम की पंक्तियों के माध्यम से आगे की लूपिंग

 DF$data.column.agg <- 0
for (i in 1:length(DF)) {
DF[i,*data.column.agg*] <- if(sum(is.na(DF[i,*weight column*])>0))  {*simple average* }
else {DF[i,*weight column*]*GGPC[i,*data column1*]+(1-DF[i,*weight column*])*GGPC[i,*data column2*]}
}