To create one R script called run_analysis.R that does the following.
- Merges the training and the test sets to create one data set.
- Extracts only the measurements on the mean and standard deviation for each measurement.
- Uses descriptive activity names to name the activities in the data set
- Appropriately labels the data set with descriptive variable names.
- From the data set in step 4, creates a second, independent tidy data set with the average of each variable for each activity and each subject.
The script does the following:
- Check if the directory "UCI HAR Dataset" exists before downloading the Dataset. If doesn't it downloads the data, unzip it and delete the original zip file. If does, it reuses the existing data.
- Load the data using read.table(): features.txt in the featureLabels dataframe, activity_labels.txt in the activityLabels, subject_train.txt, subject_test.txt in trainSubjects and testSubjects dataframes, X_train.txt, X_test.txt in trainX and testX dataframes, y_train.txt, y_test.txt in trainY and testY dataframes
- Use rbind() to merge respective test and train data into mergedSubjects, mergedX, mergedY
- Use factor() to replace the activity identifier by its labels
- Use setNames() to set the column name for subject as "subject" in mergedSubjects, activity as "activity" in mergedY, and for each column in mergedX using the labels in featureLabels
- Update mergeX to include only the columns whose names include -mean() or std() using the grep() function
- Use cbind() to merge mergedSubjects, mergedY, mergedX. Store the result as mergedAll
- Use ddply() and colMeans() on mergeAll to calculate the mean of each columns with the features (columns 3:68) per subject and per activity. Store the result as averageAll
- Use gsub() to update the variable names to make them easier to understand and use in R
- Write averageAll in the file tidy_data.txt using write.table()
The resulting tidy data set is stored in the file called tidy_data.txt in the same directory as the run_analysis.R script.