में मध्यस्थ के साथ डेटा को अवरुद्ध करने के लिए मुझे एनए मानों के साथ उस विशेष दिन ("दिनांक" द्वारा समूह) पर गणना की गई "चरणों" के मध्य द्वारा "चरणों" फ़ील्ड में लापता मानों को प्रतिस्थापित करने की आवश्यकता है। मैंने पहले से ही इस thread को संदर्भित किया है लेकिन मेरे एनए मानों को प्रतिस्थापित नहीं किया गया है। क्या कोई मुझे यह जानने में मदद कर सकता है कि मैं कहां गलत हो रहा हूं? मैं बेस पैकेज/डेटा टेबल/प्लीयर का उपयोग करना पसंद करूंगा। डेटासेट लगभग दिखता है। इस तरह: -आर
steps date interval
1: NA 2012-10-01 0
2: NA 2012-10-01 5
3: NA 2012-10-01 10
4: NA 2012-10-01 15
5: NA 2012-10-01 20
---
17564: NA 2012-11-30 2335
17565: NA 2012-11-30 2340
17566: NA 2012-11-30 2345
17567: NA 2012-11-30 2350
17568: NA 2012-11-30 2355
संरचना और डाटासेट (गतिविधि) का सारांश के रूप में नीचे
#str(activity)
Classes ‘data.table’ and 'data.frame': 17568 obs. of 3 variables:
$ steps : int NA NA NA NA NA NA NA NA NA NA ...
$ date : Date, format: "2012-10-01" "2012-10-01" "2012-10-01" ...
$ interval: int 0 5 10 15 20 25 30 35 40 45 ...
#summary(activity)
steps date interval
Min. : 0.00 Min. :2012-10-01 Min. : 0.0
1st Qu.: 0.00 1st Qu.:2012-10-16 1st Qu.: 588.8
Median : 0.00 Median :2012-10-31 Median :1177.5
Mean : 37.38 Mean :2012-10-31 Mean :1177.5
3rd Qu.: 12.00 3rd Qu.:2012-11-15 3rd Qu.:1766.2
Max. :806.00 Max. :2012-11-30 Max. :2355.0
NA's :2304
हालात से पता चला मैंने कोशिश की है:
DataTable विधि:
activityrepNA<-activity[,steps := ifelse(is.na(steps), median(steps, na.rm=TRUE), steps), by=date]
summary(activityrepNA)
steps date interval
Min. : 0.00 Min. :2012-10-01 Min. : 0.0
1st Qu.: 0.00 1st Qu.:2012-10-16 1st Qu.: 588.8
Median : 0.00 Median :2012-10-31 Median :1177.5
Mean : 37.38 Mean :2012-10-31 Mean :1177.5
3rd Qu.: 12.00 3rd Qu.:2012-11-15 3rd Qu.:1766.2
Max. :806.00 Max. :2012-11-30 Max. :2355.0
NA's :2304
एवी
का उपयोग करनास्टीवन Beaupre मदद की:
का उपयोग कर में बदलें
activity %>% group_by(date) %>% mutate(steps = replace(steps, is.na(steps), median(steps, na.rm = T)))
Source: local data table [17,568 x 3]
steps date interval
1 NA 2012-10-01 0
2 NA 2012-10-01 5
3 NA 2012-10-01 10
4 NA 2012-10-01 15
5 NA 2012-10-01 20
6 NA 2012-10-01 25
7 NA 2012-10-01 30
8 NA 2012-10-01 35
9 NA 2012-10-01 40
10 NA 2012-10-01 45
.. ... ... ...
अद्यतन कोड के लिए औसत
whynoclean<-aggregate(activity,by=list(activity$date),FUN=median,na.rm=TRUE)
> summary(whynoclean)
Group.1 steps date interval
Min. :2012-10-01 Min. :0 Min. :2012-10-01 Min. :1178
1st Qu.:2012-10-16 1st Qu.:0 1st Qu.:2012-10-16 1st Qu.:1178
Median :2012-10-31 Median :0 Median :2012-10-31 Median :1178
Mean :2012-10-31 Mean :0 Mean :2012-10-31 Mean :1178
3rd Qu.:2012-11-15 3rd Qu.:0 3rd Qu.:2012-11-15 3rd Qu.:1178
Max. :2012-11-30 Max. :0 Max. :2012-11-30 Max. :1178
NA's :8
संपादित उत्पादन की गणना के लिए ddply
cleandatapls<-ddply(activity,
+ .(as.character(date)),
+ transform,
+ steps=ifelse(is.na(steps), median(steps, na.rm=TRUE), steps))
> summary(cleandatapls)
as.character(date) steps date interval
Length:17568 Min. : 0.00 Min. :2012-10-01 Min. : 0.0
Class :character 1st Qu.: 0.00 1st Qu.:2012-10-16 1st Qu.: 588.8
Mode :character Median : 0.00 Median :2012-10-31 Median :1177.5
Mean : 37.38 Mean :2012-10-31 Mean :1177.5
3rd Qu.: 12.00 3rd Qu.:2012-11-15 3rd Qu.:1766.2
Max. :806.00 Max. :2012-11-30 Max. :2355.0
NA's :2304
सकल पर प्रयास मुझे एहसास हुआ कि प्रलोभन के लिए मेरा दृष्टिकोण त्रुटिपूर्ण था क्योंकि विशिष्ट तिथियां केवल एनए मान थीं जो समस्या का कारण बन रही थी क्योंकि एनए का औसत एनए है। एक और सुझाया गया दृष्टिकोण इस्तेमाल किया।
धन्यवाद! क्या मुझे पुस्तकालय लोड करने की ज़रूरत है? यह कह रहा है कि फ़ंक्शन%>% – Meeshu
नहीं ढूंढ सका 'install.packages ("dplyr"); लाइब्रेरी (dplyr) ' –
हाय, फिर से धन्यवाद, लेकिन मुझे इसे चरणों के मध्यस्थ (एनए मानों को हटाने के बाद गणना) और अंतराल के औसत के साथ प्रतिस्थापित करने की आवश्यकता नहीं है। मैंने अंतराल को चरणों के साथ बदलकर कोड की कोशिश की और एनए अभी भी बनी हुई है। – Meeshu