58 lines
2.6 KiB
R
58 lines
2.6 KiB
R
|
source("renv/activate.R")
|
||
|
library("dplyr", warn.conflicts = F)
|
||
|
library(stringr)
|
||
|
|
||
|
clean_ios_activity_column <- function(ios_gar){
|
||
|
ios_gar <- ios_gar %>%
|
||
|
mutate(activities = str_replace_all(activities, pattern = '("|\\[|\\])', replacement = ""))
|
||
|
|
||
|
existent_multiple_activities <- ios_gar %>%
|
||
|
filter(str_detect(activities, ",")) %>%
|
||
|
group_by(activities) %>%
|
||
|
summarise(mutiple_activities = unique(activities), .groups = "drop_last") %>%
|
||
|
pull(mutiple_activities)
|
||
|
|
||
|
known_multiple_activities <- c("stationary,automotive")
|
||
|
unkown_multiple_actvities <- setdiff(existent_multiple_activities, known_multiple_activities)
|
||
|
if(length(unkown_multiple_actvities) > 0){
|
||
|
stop(paste0("There are unkwown combinations of ios activities, you need to implement the decision of the ones to keep: ", unkown_multiple_actvities))
|
||
|
}
|
||
|
|
||
|
ios_gar <- ios_gar %>%
|
||
|
mutate(activities = str_replace_all(activities, pattern = "stationary,automotive", replacement = "automotive"))
|
||
|
|
||
|
return(ios_gar)
|
||
|
}
|
||
|
|
||
|
unify_ios_activity_recognition <- function(ios_gar){
|
||
|
# We only need to unify Google Activity Recognition data for iOS
|
||
|
# discard rows where activities column is blank
|
||
|
ios_gar <- ios_gar[-which(ios_gar$activities == ""), ]
|
||
|
# clean "activities" column of ios_gar
|
||
|
ios_gar <- clean_ios_activity_column(ios_gar)
|
||
|
|
||
|
# make it compatible with android version: generate "activity_name" and "activity_type" columns
|
||
|
ios_gar <- ios_gar %>%
|
||
|
mutate(activity_name = case_when(activities == "automotive" ~ "in_vehicle",
|
||
|
activities == "cycling" ~ "on_bicycle",
|
||
|
activities == "walking" ~ "walking",
|
||
|
activities == "running" ~ "running",
|
||
|
activities == "stationary" ~ "still"),
|
||
|
activity_type = case_when(activities == "automotive" ~ 0,
|
||
|
activities == "cycling" ~ 1,
|
||
|
activities == "walking" ~ 7,
|
||
|
activities == "running" ~ 8,
|
||
|
activities == "stationary" ~ 3,
|
||
|
activities == "unknown" ~ 4),
|
||
|
confidence = case_when(confidence == 0 ~ 0,
|
||
|
confidence == 1 ~ 50,
|
||
|
confidence == 2 ~ 100)
|
||
|
) %>%
|
||
|
select(-activities)
|
||
|
|
||
|
return(ios_gar)
|
||
|
}
|
||
|
|
||
|
main <- function(data){
|
||
|
return(unify_ios_activity_recognition(data))
|
||
|
}
|