25 lines
1.4 KiB
R
25 lines
1.4 KiB
R
source("renv/activate.R")
|
|
|
|
library("dplyr", warn.conflicts = F)
|
|
library("tidyverse")
|
|
options(scipen=999)
|
|
|
|
screen_ep <- read_csv(snakemake@input[["screen"]], col_types = cols_only(start_timestamp = col_double(), end_timestamp = col_double())) %>%
|
|
mutate(timestamp = end_timestamp)
|
|
|
|
app <- read_csv(snakemake@input[["app"]], col_types = cols_only(timestamp = col_double(), device_id = col_character(), package_name = col_character(), application_name = col_character(), is_system_app = col_integer(), genre = col_character()))
|
|
|
|
if (nrow(screen_ep) > 0 & nrow(app) > 0){
|
|
|
|
joined_dt <- full_join(app, screen_ep, by = "timestamp") %>%
|
|
arrange(timestamp) %>%
|
|
mutate(start_timestamp = timestamp, end_timestamp = lead(timestamp)) %>%
|
|
filter(!is.na(application_name)) %>%
|
|
select(-c('timestamp')) %>% head(-1) %>%
|
|
# converting the duration from milliseconds to minutes
|
|
mutate(duration = (end_timestamp - start_timestamp)/(1000*60))
|
|
write.csv(joined_dt, snakemake@output[[1]], row.names = FALSE)
|
|
} else {
|
|
empty <- tibble(device_id = character(), package_name = character(), application_name = character(), is_system_app = integer(), genre = character(), start_timestamp = double(), end_timestamp = double(), duration = double())
|
|
write.csv(empty, snakemake@output[[1]], row.names = FALSE)
|
|
} |