Loading and preprocessing the data

AMDdata<-read.csv(file="activity.csv")

Calculating the total steps for each day

sumstepsperday<-tapply(AMDdata$steps,AMDdata$date,sum)
hist(sumstepsperday, main="Total steps per day", col="yellow",breaks = 10)

What is mean total number of steps taken per day?

meanstepsperday<-mean(sumstepsperday, na.rm=TRUE)
medianstepsperday<-median(sumstepsperday, na.rm=TRUE)

The mean is 10766.19, and the median is 10765

What is the average daily activity pattern?

meanstepsinterval<-tapply(AMDdata$steps,AMDdata$interval,mean, na.rm=TRUE, simplify = TRUE)
meanstepsinterval<-as.data.frame(as.matrix(meanstepsinterval))
plot(row.names(meanstepsinterval),meanstepsinterval$V1, type="l", xlab="interval, 5min", ylab="Average steps", col="blue")

intervalwithmaxsteps<-row.names(meanstepsinterval)[which.max(meanstepsinterval$V1)]

Interval 835, on average across all the days in the dataset, contains the maximum number of steps

Imputing missing values

narow<-nrow(AMDdata[is.na(AMDdata$steps),])

There are 2304 missing values

Strategy: replace the NA with averge steps for each interval

cleanAMDdata<-AMDdata
meanstepsinterval[,"interval"]<-rownames(meanstepsinterval)
cleanAMDdata<-merge(cleanAMDdata,meanstepsinterval,by="interval")
cleanAMDdata$steps[is.na(cleanAMDdata$steps)]<-cleanAMDdata$V1[is.na(cleanAMDdata$steps)]
cleanAMDdata$V1=NULL

Calculate the total number steps, mean and median for each day

sumstepsperdaynew<-tapply(cleanAMDdata$steps,cleanAMDdata$date,sum)
hist(sumstepsperdaynew, main="Total steps per day", col="red",breaks = 10)

What is mean total number of steps taken per day?

meanstepsperdaynew<-mean(sumstepsperdaynew )
medianstepsperdaynew<-median(sumstepsperdaynew)

The mean is 10766.19, and the median is 10766.19

Are there differences in activity patterns between weekdays and weekends?

cleanAMDdata$Day <- weekdays(as.Date(as.character(cleanAMDdata$date)))
cleanAMDdata$Day[cleanAMDdata$Day=="Sunday"|cleanAMDdata$Day=="Saturday"]="weekend"
cleanAMDdata$Day[!(cleanAMDdata$Day=="weekend")]="weekday"
cleanAMDdata$Day <- as.factor(c("Weekend","Weekday"))
meanstepsnew<-with(cleanAMDdata, tapply(steps,list(interval, Day), mean, simplify = TRUE))
meanstepsnew<-as.data.frame(as.matrix(meanstepsnew))
plot(row.names(meanstepsnew), meanstepsnew$Weekday, type = "l", col = "green", main = "Weekdays", ylab="Average steps", xlab="Interval")

plot(row.names(meanstepsnew), meanstepsnew$Weekend, type = "l", col = "orange", main = "Weekends", ylab="Average steps", xlab="Interval")