From 33a8b2cd48901bcb5d9252f23a24f681dadab92f Mon Sep 17 00:00:00 2001 From: Vincent van Hees Date: Fri, 27 Sep 2024 13:24:18 +0200 Subject: [PATCH] add function to read and merge Philips Health Band xlsx file pairs #68 --- DESCRIPTION | 2 +- NAMESPACE | 2 +- NEWS.md | 5 +- R/mergePHBfilePairs.R | 66 ++++++++++++++++++ ...taList_AH1234567890_PhilipsHealthBand.xlsx | Bin 0 -> 57421 bytes ...p_Wake_AH1234567890_PhilipsHealthBand.xlsx | Bin 0 -> 25848 bytes man/mergePHBfilePairs.Rd | 30 ++++++++ tests/testthat/test_mergePHBfilePairs.R | 33 +++++++++ 8 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 R/mergePHBfilePairs.R create mode 100644 inst/testfiles/DataList_AH1234567890_PhilipsHealthBand.xlsx create mode 100644 inst/testfiles/Sleep_Wake_AH1234567890_PhilipsHealthBand.xlsx create mode 100644 man/mergePHBfilePairs.Rd create mode 100644 tests/testthat/test_mergePHBfilePairs.R diff --git a/DESCRIPTION b/DESCRIPTION index 0536150..2bfb8d6 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,7 +22,7 @@ URL: https://github.com/wadpac/GGIRread/ BugReports: https://github.com/wadpac/GGIRread/issues License: Apache License (== 2.0) Suggests: testthat -Imports: matlab, bitops, Rcpp (>= 0.12.10), data.table +Imports: matlab, bitops, Rcpp (>= 0.12.10), data.table, readxl Depends: stats, utils, R (>= 3.5.0) NeedsCompilation: yes LinkingTo: Rcpp diff --git a/NAMESPACE b/NAMESPACE index bbd7ca6..465eca0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -6,5 +6,5 @@ useDynLib(GGIRread, .registration = TRUE) importFrom(Rcpp, sourceCpp) importFrom(data.table, fread) importFrom("utils", "setTxtProgressBar", "txtProgressBar") -importFrom("utils", "read.csv") +importFrom("utils", "read.csv", "write.csv") importFrom("utils", "available.packages") \ No newline at end of file diff --git a/NEWS.md b/NEWS.md index 4564353..1d6a235 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,12 +3,15 @@ - Added a `NEWS.md` file to track changes to the package. - Stops interactive calling of `chooseCRANmirror` on `.onAttach` if interactive and CRAN mirror not set GGIR #1141. - Migrate read function for ActiGraph (csv) and Actiwatch (csv/awd) count data to GGIRread #68. -- Add read function for Actical (csv) count data #68. +- Add function for reading Actical (csv) count data #68. +- Add function to read and merge Philips Health Band file pairs (xlsx) #68. + # Changes in version 1.0.1 (release date:03-06-2024) - Progress bar fixed, issue #63 (credits: John Muschelli) + # Changes in version 1.0.0 (release date:27-03-2024) - GENEActiv no longer prints error to console when more data is requested diff --git a/R/mergePHBfilePairs.R b/R/mergePHBfilePairs.R new file mode 100644 index 0000000..8f8f3a3 --- /dev/null +++ b/R/mergePHBfilePairs.R @@ -0,0 +1,66 @@ +mergePHBfilePairs = function(inputPath = ".", outputPath = ".") { + # merges Philips Health Band xlsx files per participant + # as there can be multiple files per participant. + + fnames = dir(inputPath, recursive = FALSE, full.names = TRUE, pattern = "[.]xlsx") + fileOverview = data.frame(filename = fnames) + + extractID = function(x) { + x = basename(x) + x = gsub(pattern = "sleep_wake", replacement = "sleepwake", x = tolower(x)) + ID = unlist(strsplit(x, "_"))[2] + return(ID) + } + fileOverview$ID = unlist(lapply(fileOverview$filename, FUN = extractID)) + + uids = unique(fileOverview$ID) + for (uid in uids) { + filesForThisPerson = fileOverview$filename[which(fileOverview$ID == uid)] + # Identify both file + file1 = grep(pattern = "datalist", x = filesForThisPerson, ignore.case = TRUE) + file2 = grep(pattern = "sleep_wake", x = filesForThisPerson, ignore.case = TRUE) + if (length(file1) == 0 && length(file2) == 0) { + next + } + # Data + if (length(file1) > 0) { + data1 = as.data.frame(readxl::read_excel(path = filesForThisPerson[file1], + col_types = "text", skip = 8), + row.names = FALSE) + header = as.data.frame(readxl::read_excel(path = filesForThisPerson[file1], + col_types = "text", n_max = 8, + .name_repair = "unique_quiet"), + row.names = FALSE)[, 1] + SNlocation = grep(pattern = "deviceSN", x = header) + if (length(SNlocation) > 0) { + deviceSN = unlist(strsplit(header[grep(pattern = "deviceSN", x = header)], " ")) + deviceSN = deviceSN[length(deviceSN)] + } else { + deviceSN = NULL + } + colnames(data1)[grep(pattern = "counts", x = colnames(data1), ignore.case = TRUE)] = "counts" + colnames(data1)[grep(pattern = "offWrist", x = colnames(data1), ignore.case = TRUE)] = "nonwear" + } + # Sleep wake scores + if (length(file2) > 0) { + data2 = as.data.frame(readxl::read_excel(path = filesForThisPerson[file2], col_types = "text", skip = 8), row.names = FALSE) + colnames(data2)[grep(pattern = "sleepWake", x = colnames(data2), ignore.case = TRUE)] = "sleep" + } + if (length(file1) > 0 && length(file2) > 0) { + data2 = data2[, which(colnames(data2) != "sleepEventMarker")] + data = merge(data1, data2, by = "timeStamp") + } else { + if (length(file1) > 0) { + data = data1 + } else { + data = data2 + } + } + colnames(data)[grep(pattern = "timeStamp", x = colnames(data))] = "timestamp" + newName = gsub(pattern = "Sleep_Wake", replacement = "def", x = basename(filesForThisPerson[file2])) + newName = paste0(unlist(strsplit(newName, "[.]")) , collapse = paste0("_", deviceSN, ".")) + newName = gsub(pattern = "xlsx", replacement = "csv", x = newName) + outputfile = paste0(outputPath, "/", newName) + write.csv(x = data, file = outputfile, row.names = FALSE) + } +} \ No newline at end of file diff --git a/inst/testfiles/DataList_AH1234567890_PhilipsHealthBand.xlsx b/inst/testfiles/DataList_AH1234567890_PhilipsHealthBand.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3c9c4e46347cb0abae290842888c53302145b10b GIT binary patch literal 57421 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 T +} \ No newline at end of file diff --git a/tests/testthat/test_mergePHBfilePairs.R b/tests/testthat/test_mergePHBfilePairs.R new file mode 100644 index 0000000..d516697 --- /dev/null +++ b/tests/testthat/test_mergePHBfilePairs.R @@ -0,0 +1,33 @@ +library(GGIRread) +context("merge PHB files") +test_that("merging of PHB files goes correctly", { + # prepare folder with test files + file1 = system.file("testfiles/DataList_AH1234567890_PhilipsHealthBand.xlsx", package = "GGIRread") + file2 = system.file("testfiles/Sleep_Wake_AH1234567890_PhilipsHealthBand.xlsx", package = "GGIRread") + path = "./phb_test_folder" + if (!dir.exists(path)) { + dir.create(path) + } + invisible(file.copy(from = file1, to = path, overwrite = TRUE)) + invisible(file.copy(from = file2, to = path, overwrite = TRUE)) + + # apply function to merge the files + mergePHBfilePairs(inputPath = path, outputPath = path) + + # check whether merged file exists + newfiles = dir(path, full.names = TRUE) + newFile = newfiles[grep(pattern = "def_AH1234567890_PhilipsHealthBand_000100621938.csv", x = newfiles)] + expect_true(length(newFile) == 1) + + # check file content + data = read.csv(newFile) + expect_equal(nrow(data), 246) + expect_equal(ncol(data), 19) + expect_equal(sum(data$counts), 50898) + expect_equal(sum(data$steps), 1) + expect_equal(data$timestamp[1], "11-05-2022 01:10:00") + + # clean up + if (dir.exists(path)) unlink(path, recursive = TRUE) +}) + \ No newline at end of file