summaryrefslogtreecommitdiffstats
path: root/admin/survey/modules/mod_uporabnost/R/calc.usability.R
blob: 4e4bb0c1ba57235e4b540b7dc9f92d7891ae0c8c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
calc.usability <- function(m.all, return.type){
  # return.type:
  #   1: return only absolute
  #   2: return only %
  #   3: return both (even rows: absolute, odd rows: %)
  
  ## calculations
  m.all[, Prekinitve:=v3]
  m.all[, Neodgovori:=v1]
  m.all[, Nevsebinski:=v96+v97+v98+v99]
  m.all[, Izpostavljen:=allqs-(v2+v3+v4+v5)]
  setnames(m.all, "va", "Veljavni")
  
  m.all[, UNL:=Neodgovori/Izpostavljen]
  m.all[is.na(UNL)==T, UNL:=0]
  m.all[, UML:=(v3/allqs)+(1-(v3/allqs))*UNL]
  m.all[, UCL:=1-UML]
  m.all[, UIL:=v2/(v2+Izpostavljen)]
  m.all[is.na(UIL)==T, UIL:=0]
  m.all[, UAQ:=v4/allqs]
  
  m.all[, Uporabnost:=1-UML]
  
  #tidy up
  setcolorder(m.all, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori", 
                       "Izpostavljen", "Prekinitve", "Uporabnost",
                       "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
                       "UNL", "UML", "UCL", "UIL", "UAQ"))
  
  if(return.type==1){
    return(m.all)
  }else{
    m.all.p <- copy(m.all)
    
    m.all.p[, (c("Veljavni", "Nevsebinski", "Neodgovori")) := lapply(.SD, "/", m.all.p$Izpostavljen), .SDcols=c("Veljavni", "Nevsebinski", "Neodgovori")]
    m.all.p[, (c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")) := lapply(.SD, "/", m.all.p$allqs), .SDcols=c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")]
    m.all.p[, Izpostavljen:=1]
    
    if(return.type==2){
      return(m.all.p)
    }else{
      m.all[, Uporabnost:=Veljavni]
      m.all[, c("UNL", "UML", "UCL", "UIL", "UAQ"):=NA]
      m.all <- m.all[, lapply(.SD, as.character)]
      
      m.all.p[, allqs:=NA]
      m.all.p[, allqs:=as.character(allqs)]
      
      change.cols <- c("Veljavni", "Nevsebinski", "Neodgovori", "Izpostavljen", "Prekinitve", "Uporabnost",
                       "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
                       "UNL", "UML", "UCL", "UIL", "UAQ")
      m.all.p[, (change.cols):=lapply(.SD, function(x){paste0(round(x*100, 0), "%")}), .SD=change.cols]
      
      m.1ka <- data.table(matrix("", nrow=nrow(m.all)*2, ncol=ncol(m.all)))
      
      a.rows <- as.integer(seq(1, nrow(m.1ka), by=2))
      p.rows <- as.integer(seq(2, nrow(m.1ka), by=2))
      
      set(m.1ka, a.rows, 1:ncol(m.1ka), value=m.all)
      suppressWarnings(set(m.1ka, p.rows, 1:ncol(m.1ka), value=m.all.p))
      
      setnames(m.1ka, colnames(m.all))
      m.1ka[, Status:=NA_character_]
      setcolorder(m.1ka, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori", 
                           "Izpostavljen", "Prekinitve", "Uporabnost", "Status",
                           "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
                           "UNL", "UML", "UCL", "UIL", "UAQ"))
      
      return(m.1ka)
    }
  }
}