Facebook
From Szymon, 1 Week ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 35
  1. metodaRang <- function(dane, wagi, charakter){
  2.  
  3.   l_wierszy <- dim(dane)[1]
  4.   l_kol = dim(dane)[2]
  5.  
  6.   dane_rangowane <- matrix(NA, nrow = l_wierszy, ncol = 0)
  7.   rangi <- matrix(data = NA, nrow = l_wierszy, ncol = 0)
  8.   # kaĹźdej kolumnie przypisuje rangi
  9.   for (i in 1:l_kol){
  10.     # rangowanie kolumny
  11.     kolumna <- as.data.frame(dane[,i])
  12.     colnames(kolumna) <- colnames(dane)[i]
  13.     charakter <- as.matrix(charakter)
  14.     ch <- charakter[i]
  15.    
  16.  
  17.     if (identical(ch, "+")){
  18.       # jesli kolumna jest stymulanta
  19.       # im mniejsza wartosc tym mniejsza ranga
  20.       ranga <- l_wierszy - rank(kolumna) +1
  21.       rangi <- cbind(rangi, ranga)
  22.     } else if(identical(ch, "-")) {
  23.       # jesli kolumna jest destymulanta
  24.       ranga <- rank(kolumna)
  25.       rangi <- cbind(rangi, ranga)
  26.     }
  27.    
  28.     dane_rangowane <- cbind(dane_rangowane, kolumna, ranga)
  29.   }
  30.   rangi <- as.data.frame(rangi)
  31.   rangi <- rangi*wagi
  32.  
  33.   rangi["srednia"] <- as.data.frame(apply(rangi, 1, mean))
  34.   rangi["ocena"] <- rank(rangi["srednia"])
  35.   dane_rangowane <- cbind(dane_rangowane, rangi["srednia"], rangi["ocena"])
  36.   dane_rangowane <- as.data.frame(dane_rangowane)
  37.   rownames(dane_rangowane) <- rownames(dane)
  38.   return(dane_rangowane)
  39. }
  40.  
  41. wynik_rangi <- metodaRang(dane = dane,
  42.                           wagi = c(1, 1, 1, 1, 1, 1, 1, 1),
  43.                           charakter = c("-", "+", "-", "-", "+", "-", "+", "+"))