mainV2.R 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. suppressMessages(library(dplyr))
  2. suppressMessages(library(stringr))
  3. WD <- getwd()
  4. specify_decimal <- function(x, k) format(round(x, k), nsmall=k)
  5. CSV <- file.choose()
  6. CSV <- read.csv(CSV)
  7. # CONVERT
  8. DATA <- NULL
  9. for(i in 1:(nrow(CSV) / 3)) {
  10. x <- NULL
  11. y <- NULL
  12. z <- NULL
  13. if(i > 1) { i <- i * 3 - 2 }
  14. x <- CSV[i,]
  15. y <- CSV[i+1,]
  16. z <- CSV[i+2,]
  17. cnv_ <- merge(x, y, all = TRUE, suffixes = c(".x", ".y"), by = "Time")
  18. cnv_ <- merge(cnv_, z, all = TRUE, suffixes = c("", ".z"), by = "Time")
  19. if(i == 1) {
  20. DATA <- cnv_
  21. }
  22. else {
  23. DATA <- bind_rows(DATA, cnv_)
  24. }
  25. }
  26. DATA$state = "UNKNOWN"
  27. remove(x)
  28. remove(y)
  29. remove(z)
  30. remove(cnv_)
  31. #Plot graph
  32. plot(DATA$Head.y,
  33. type = "l",
  34. ylab = "Hoogte hoofd"
  35. )
  36. # CALCULATE PATIENT STATE ALGORITHM
  37. STATE = c("WALK", "UP", "DOWN", "SIT")
  38. size_ <- 5
  39. differ_ <- 0.1
  40. #color <- rainbow(length(STATE))
  41. color <- c("red", "blue", "blue", "green")
  42. POINTS <- data.frame(
  43. index = integer(1)
  44. )
  45. POINTS["state"] <- 0
  46. for(i in 1:size_){
  47. POINTS[LETTERS[i]] <- 0
  48. }
  49. for(i in size_:(nrow(DATA)-size_)){
  50. start <- DATA[i,]$Head.y
  51. end <- DATA[i+size_,]$Head.y
  52. state_ <- NULL
  53. if(((start - end) < differ_) && (start - end) > -differ_){
  54. if(start >= mean(DATA$Head.y)){ #WALK (4)
  55. state_ <- 1
  56. }
  57. else{ #SIT (4)
  58. state_ <- 4
  59. }
  60. }
  61. else if((start - end) < differ_) { #UP (2)
  62. state_ <- 2
  63. }
  64. else if((start - end) > differ_) { #UP (3)
  65. state_ <- 3
  66. }
  67. else {
  68. state_ <- 1
  69. }
  70. for(j in 0:size_-1){
  71. POINTS[i-j,LETTERS[j+1]] <- state_
  72. #POINTS[i,LETTERS[j+1]] <- state_
  73. }
  74. if(i>size_*2 && i<=((nrow(DATA) - size_)+1)){
  75. POINTS[i-size_,]$state <- (
  76. tbl_df(
  77. table(
  78. POINTS[i-size_,] %>%
  79. unlist(., use.names=FALSE)
  80. )
  81. ) %>%
  82. arrange(
  83. desc(n)
  84. )
  85. )[1,]$Var1
  86. }
  87. #Plot state point on graph
  88. points(i, DATA[i,]$Head.y, col = color[state_])
  89. }