|
@@ -1,17 +1,18 @@
|
|
|
-library(dplyr)
|
|
|
|
|
-
|
|
|
|
|
|
|
+suppressMessages(library(dplyr))
|
|
|
|
|
|
|
|
WD <- getwd()
|
|
WD <- getwd()
|
|
|
|
|
|
|
|
|
|
+specify_decimal <- function(x, k) format(round(x, k), nsmall=k)
|
|
|
|
|
|
|
|
CSV <- file.choose()
|
|
CSV <- file.choose()
|
|
|
|
|
|
|
|
CSV <- read.csv(CSV)
|
|
CSV <- read.csv(CSV)
|
|
|
|
|
|
|
|
# CONVERT
|
|
# CONVERT
|
|
|
-converted_ <- NULL
|
|
|
|
|
|
|
+DATA <- NULL
|
|
|
|
|
|
|
|
for(i in 1:(nrow(CSV) / 3)) {
|
|
for(i in 1:(nrow(CSV) / 3)) {
|
|
|
|
|
+ #if(i < 215 || i > 240) next
|
|
|
x <- NULL
|
|
x <- NULL
|
|
|
y <- NULL
|
|
y <- NULL
|
|
|
z <- NULL
|
|
z <- NULL
|
|
@@ -27,23 +28,157 @@ for(i in 1:(nrow(CSV) / 3)) {
|
|
|
|
|
|
|
|
if(i == 1) {
|
|
if(i == 1) {
|
|
|
#print("CREATE")
|
|
#print("CREATE")
|
|
|
- converted_ <- cnv_
|
|
|
|
|
|
|
+ DATA <- cnv_
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
#print("BIND")
|
|
#print("BIND")
|
|
|
- converted_ <- bind_rows(converted_, cnv_)
|
|
|
|
|
|
|
+ DATA <- bind_rows(DATA, cnv_)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-plot(converted_$Head.y,
|
|
|
|
|
|
|
+DATA$state = "UNKNOWN"
|
|
|
|
|
+
|
|
|
|
|
+remove(x)
|
|
|
|
|
+remove(y)
|
|
|
|
|
+remove(z)
|
|
|
|
|
+remove(cnv_)
|
|
|
|
|
+
|
|
|
|
|
+headDF <- select(DATA, Time, Head.y)
|
|
|
|
|
+headDF$IndexTime <- 1:nrow(headDF)
|
|
|
|
|
+lowpoints <- subset(headDF, headDF$Head.y <= 0.0)
|
|
|
|
|
+lowpoints <- diff(as.matrix(lowpoints))
|
|
|
|
|
+lowpoints <- as.data.frame(lowpoints)
|
|
|
|
|
+
|
|
|
|
|
+calcIndexTime <- max(lowpoints$IndexTime)
|
|
|
|
|
+
|
|
|
|
|
+#GET SMALLEST VALUE OF HEAD HIGHT
|
|
|
|
|
+
|
|
|
|
|
+# GRAPH IS ALWAYS => SITTING, GET_UP, WALKING, GET_DOWN, SITTING
|
|
|
|
|
+
|
|
|
|
|
+min_ <- min(DATA$Head.y)
|
|
|
|
|
+norm_ <- 0
|
|
|
|
|
+
|
|
|
|
|
+sitting1 <- c()
|
|
|
|
|
+get_up <- c()
|
|
|
|
|
+walking <- c()
|
|
|
|
|
+get_down <- c()
|
|
|
|
|
+sitting2 <- c()
|
|
|
|
|
+
|
|
|
|
|
+cur_state <- ""
|
|
|
|
|
+cur_count <- 0
|
|
|
|
|
+prev_state <- ""
|
|
|
|
|
+prev_count <- 0
|
|
|
|
|
+deep_state <- ""
|
|
|
|
|
+deep_count <- 0
|
|
|
|
|
+
|
|
|
|
|
+row_count <- 0
|
|
|
|
|
+
|
|
|
|
|
+plot(DATA$Head.y,
|
|
|
type = "l",
|
|
type = "l",
|
|
|
ylab = "Hoogte hoofd"
|
|
ylab = "Hoogte hoofd"
|
|
|
- )
|
|
|
|
|
|
|
+)
|
|
|
|
|
|
|
|
|
|
+for(i in 2:nrow(DATA)){
|
|
|
|
|
+ offset <- DATA[i-1,]
|
|
|
|
|
|
|
|
|
|
+ diff = offset$Head.y - DATA[i,]$Head.y
|
|
|
|
|
|
|
|
|
|
+ color <- "black"
|
|
|
|
|
|
|
|
|
|
+ if(diff < -0.013){
|
|
|
|
|
+ DATA[i,]$state = "GET_UP"
|
|
|
|
|
+ color <- "red"
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(diff > 0.013){
|
|
|
|
|
+ DATA[i,]$state = "GET_DOWN"
|
|
|
|
|
+ color <- "red"
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(DATA[i,]$Head.y - min_ > 0.15){
|
|
|
|
|
+ DATA[i,]$state = "WALKING"
|
|
|
|
|
+ color <- "blue"
|
|
|
|
|
+ }
|
|
|
|
|
+ else{
|
|
|
|
|
+ DATA[i,]$state = "SITTING"
|
|
|
|
|
+ color <- "green"
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ prox <- 8
|
|
|
|
|
+
|
|
|
|
|
+ if(cur_state == DATA[i,]$state && i != nrow(DATA)){
|
|
|
|
|
+ cur_count <- cur_count+1
|
|
|
|
|
+ row_count <- row_count+1
|
|
|
|
|
+ if(cur_count > prox){
|
|
|
|
|
+ prev_state <- cur_state
|
|
|
|
|
+ prev_count <- cur_count
|
|
|
|
|
+ deep_count <- 0
|
|
|
|
|
+ deep_state <- cur_state
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(DATA[i,]$state == deep_state){
|
|
|
|
|
+ cur_state <- DATA[i,]$state
|
|
|
|
|
+ #cur_count <- deep_count+1
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(i == nrow(DATA)){
|
|
|
|
|
+ sitting2 <- c(i-deep_count, i-1)
|
|
|
|
|
+ }
|
|
|
|
|
+ else{
|
|
|
|
|
+ if(prev_count == row_count){
|
|
|
|
|
+ cur_count <- cur_count+1
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == "WALKING" && row_count > 3){
|
|
|
|
|
+ cur_count <- cur_count+2
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == ""){
|
|
|
|
|
+ deep_state = DATA[i,]$state
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(cur_count < prox){
|
|
|
|
|
+ cur_count <- cur_count+1
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(prev_count <= prox){
|
|
|
|
|
+ deep_count <- deep_count + 1
|
|
|
|
|
+ prev_state <- deep_state
|
|
|
|
|
+ prev_count <- deep_count
|
|
|
|
|
+ cur_state <- prev_state
|
|
|
|
|
+ cur_count <- cur_count+1
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (prev_count > prox ){
|
|
|
|
|
+ deep_count <- cur_count + 1
|
|
|
|
|
+ #deep_state <- prev_state
|
|
|
|
|
+ vct <- c(i-deep_count, i-1)
|
|
|
|
|
+ points(i-deep_count, 0, col = "black")
|
|
|
|
|
+ if(deep_state == "SITTING" && i < nrow(DATA) / 2){
|
|
|
|
|
+ sitting1 <- vct
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == "SITTING"){
|
|
|
|
|
+ sitting2 <- vct
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == "GET_UP"){
|
|
|
|
|
+ get_up <- vct
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == "WALKING"){
|
|
|
|
|
+ walking <- c(walking, vct)
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(deep_state == "GET_DOWN"){
|
|
|
|
|
+ get_down <- vct
|
|
|
|
|
+ }
|
|
|
|
|
+ #print(deep_state)
|
|
|
|
|
+ #print(vct)
|
|
|
|
|
+
|
|
|
|
|
+ deep_count <- 0
|
|
|
|
|
+ #deep_state <- ""
|
|
|
|
|
+ #prev_count <- 0
|
|
|
|
|
+
|
|
|
|
|
+ cur_count <- 1
|
|
|
|
|
+ prev_count <- 1
|
|
|
|
|
+ row_count <- 1
|
|
|
|
|
+ cur_state <- DATA[i,]$state
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ cur_state <- DATA[i,]$state
|
|
|
|
|
+ row_count <- 1
|
|
|
|
|
+ }
|
|
|
|
|
+ points(i, DATA[i,]$Head.y, col = color)
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|