setwd("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset")
if (!require("data.table")) {
  install.packages("data.table")
}
## Loading required package: data.table
if (!require("reshape2")) {
  install.packages("reshape2")
}
## Loading required package: reshape2
## 
## Attaching package: 'reshape2'
## 
## The following objects are masked from 'package:data.table':
## 
##     dcast, melt
require("data.table")
require("reshape2")

Load: activity labels

activity_labels <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/activity_labels.txt")[,2]

Load: data column names

features <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/features.txt")[,2]

Extract only the measurements on the mean and standard deviation for each measurement.

extract_features <- grepl("mean|std", features)

Load and process X_test & y_test data.

X_test <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/test/X_test.txt")
y_test <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/test/y_test.txt")
subject_test <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/test/subject_test.txt")

names(X_test) = features

Extract only the measurements on the mean and standard deviation for each measurement.

X_test = X_test[,extract_features]

Load activity labels

y_test[,2] = activity_labels[y_test[,1]]
names(y_test) = c("Activity_ID", "Activity_Label")
names(subject_test) = "subject"

Bind data

test_data <- cbind(as.data.table(subject_test), y_test, X_test)

Load and process X_train & y_train data.

X_train <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/train/X_train.txt")
y_train <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/train/y_train.txt")

subject_train <- read.table("C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/train/subject_train.txt")

names(X_train) = features

Extract only the measurements on the mean and standard deviation for each measurement.

X_train = X_train[,extract_features]

Load activity data

y_train[,2] = activity_labels[y_train[,1]]
names(y_train) = c("Activity_ID", "Activity_Label")
names(subject_train) = "subject"

Bind data

train_data <- cbind(as.data.table(subject_train), y_train, X_train)

Merge test and train data

data = rbind(test_data, train_data)

id_labels   = c("subject", "Activity_ID", "Activity_Label")
data_labels = setdiff(colnames(data), id_labels)
melt_data      = melt(data, id = id_labels, measure.vars = data_labels)

Apply mean function to dataset using dcast function

tidy_data   = dcast(melt_data, subject + Activity_Label ~ variable, mean)

write.table(tidy_data, file = "C:/Users/Justice2/Desktop/Online Coursera/Coursera-R-Programming/UCI HAR Dataset/tidy_data.txt")