Installing packages required for cleaning and analysis
install.packages("tidyverse", repos = "https://cran.studio.com/")
install.packages("zoo", repos = "https://cran.studio.com/")
Loading required packages
library(tidyverse)
library(zoo)
Importing and Renaming Relevant Data From Dataset 1
daily_activity1 <- read.csv(file.path(dir1, "dailyActivity_merged.csv"))
seconds_heartrate1 <- read.csv(file.path(dir1, "heartrate_seconds_merged.csv"))
minutes_sleep1 <- read.csv(file.path(dir1, "minuteSleep_merged.csv"))
# View imported files
head(daily_activity1)
head(seconds_heartrate1)
head(minutes_sleep1)
Importing and Renaming Relevant Data from Dataset 2
daily_activity2 <- read.csv(file.path(dir2, 'dailyActivity_merged.csv'))
days_sleep <- read.csv(file.path(dir2, 'sleepDay_merged.csv'))
seconds_heartrate2 <- read.csv(file.path(dir2, 'heartrate_seconds_merged.csv'))
minutes_sleep2 <- read.csv(file.path(dir2, 'minuteSleep_merged.csv'))
# View imported files
head(daily_activity2)
head(days_sleep)
head(seconds_heartrate2)
head(minutes_sleep2)
Importing and Renaming Relevant Data from Dataset 3
target_files <- c("activity", "activity_level", "heart_rate", "sleep", "sleep_hypnogram", "readiness")
pattern <- paste0("^(", paste(target_files, collapse = "|"), ")\\.csv$")
file_paths <- list.files(
path = "C:/Users/Somon/OneDrive/Desktop/Coursera/04-Case Study/Datasets/ifh_affect",
pattern = pattern,
full.names = TRUE,
recursive = TRUE
)
# Group files by their base name (without extension)
file_groups <- split(file_paths, tools::file_path_sans_ext(basename(file_paths)))
# Read and process each group into a named list
data_list <- map(file_groups, function(paths) {
map_df(paths, ~ {
read_csv(.x, col_types = cols(.default = "c")) %>%
mutate(participants = basename(dirname(dirname(.x))), .before = 1)
})
})
list2env(data_list, envir = .GlobalEnv)
head(activity)
Combining the Data from Dataset 1 and 2
daily_activity_combined <- rbind(daily_activity1, daily_activity2)
minutes_sleep_combined <- rbind(minutes_sleep1, minutes_sleep2)
seconds_heartrate_combined <- rbind(seconds_heartrate1, seconds_heartrate2)
head(daily_activity_combined)
head(minutes_sleep_combined)
head(seconds_heartrate_combined)
Converting Character Columns in Dataset 3 to Numeric
activity_combined <- activity %>%
mutate(
across(
.cols = c(
score_stay_active,
score_meet_daily_targets,
score_training_frequency,
score_training_volume
),
.fns = ~ as.numeric(as.character(.x))
)
)
head(activity_combined)