2014-10-14 7 views
4

В настоящее время я делаю курс Воспроизводимые данные по Курсере, и один из вопросов задает среднюю и среднюю ступени в день, у меня есть это, но когда я подтверждаю его с помощью сводной функции, сводка версия Среднего и Медиана различна. Я запускаю это через knitrСреднее и среднее значение Vs Резюме

Зачем это было? ** ниже является редактирование, показывающий все мои сценарии до сих пор в том числе ссылки на исходные данные:

##Download the data You have to change https to http to get this to work in knitr 

target_url <- "http://d396qusza40orc.cloudfront.net/repdata%2Fdata%2Factivity.zip" 
target_localfile = "ActivityMonitoringData.zip" 
if (!file.exists(target_localfile)) { 
    download.file(target_url, destfile = target_localfile) 
} 
Unzip the file to the temporary directory 

unzip(target_localfile, exdir="extract", overwrite=TRUE) 
List the extracted files 

list.files("./extract") 
## [1] "activity.csv" 
Load the extracted data into R 

activity.csv <- read.csv("./extract/activity.csv", header = TRUE) 
activity1 <- activity.csv[complete.cases(activity.csv),] 
str(activity1) 
## 'data.frame': 15264 obs. of 3 variables: 
## $ steps : int 0 0 0 0 0 0 0 0 0 0 ... 
## $ date : Factor w/ 61 levels "2012-10-01","2012-10-02",..: 2 2 2 2 2 2 2 2 2 2 ... 
## $ interval: int 0 5 10 15 20 25 30 35 40 45 ... 
Use a histogram to view the number of steps taken each day 

histData <- aggregate(steps ~ date, data = activity1, sum) 
h <- hist(histData$steps, # Save histogram as object 
      breaks = 11, # "Suggests" 11 bins 
      freq = T, 
      col = "thistle1", 
      main = "Histogram of Activity", 
      xlab = "Number of daily steps") 


Obtain the Mean and Median of the daily steps 

steps <- histData$steps 
mean(steps) 
## [1] 10766 
median(steps) 
## [1] 10765 
summary(histData$steps) 
## Min. 1st Qu. Median Mean 3rd Qu. Max. 
##  41 8840 10800 10800 13300 21200 
summary(steps) 
## Min. 1st Qu. Median Mean 3rd Qu. Max. 
##  41 8840 10800 10800 13300 21200 
sessionInfo() 
## R version 3.1.1 (2014-07-10) 
## Platform: i386-w64-mingw32/i386 (32-bit) 
## 
## locale: 
## [1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 
## [3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C      
## [5] LC_TIME=English_Australia.1252  
## 
## attached base packages: 
## [1] stats  graphics grDevices utils  datasets methods base  
## 
## other attached packages: 
## [1] knitr_1.6 
## 
## loaded via a namespace (and not attached): 
## [1] evaluate_0.5.5 formatR_1.0 stringr_0.6.2 tools_3.1.1 
+2

Поделитесь своим 'histData'. – m0nhawk

+0

@ Крис вы можете показать на выставке как «range (hist)»? –

+1

Возможно, проблема с печатью? 'summary.data.frame' показывает только 4 значащие цифры по умолчанию. –

ответ

6

На самом деле, ответы это правильно, вы просто печать неправильно. Вы устанавливаете опцию digits.

Put это перед скриптами:

options(digits=12) 

И вы будете иметь:

mean(steps) 
# [1] 10766.1886792 
median(steps) 
# [1] 10765 
summary(steps) 
#  Min. 1st Qu.  Median  Mean 3rd Qu.  Max. 
# 41.0000 8841.0000 10765.0000 10766.1887 13294.0000 21194.0000 

Обратите внимание, что summary использование max(3, getOption("digits")-3) на сколько номеров печатается. Так что вокруг его немного (10766.1887 вместо 10766.1886792).

+0

Да, вы правы, это сработало и для меня , благодаря. Я очень впечатлен этим сайтом и уровнями знаний пользователей. Как люди попадают на уровень знаний гуру здесь? – Chris

+0

Спасло меня много неприятностей !! Просто отметим, что вы также можете использовать «цифры» непосредственно в сводном вызове, например 'summary (шаги, цифры = 5)' – andrechalom