Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #input matrix
  2. TestMatrix = Matrix(c(0.80,0.9,0.6,0,0,0.3,0.5,
  3. 0,0,0.3,0,0,0,0,
  4. 0.4,0.5,0.6,0,0,0.1,0,
  5. 0,0,0,0,0,0,0,
  6. 0.3,0.4,0.5,0.2,0.1,0.7,0.8,
  7. 0.6,0.7,0.5,0.8,0,0,0),7,sparse = TRUE)
  8.  
  9. #function to genrate ranks across all the columns for the input matrix
  10. GenerateRankMatrix <- function(aMatrix){ ## Function Begins
  11. n <- diff(aMatrix@p) ## number of non-zeros per column
  12. lst <- split(aMatrix@x, rep.int(1:ncol(aMatrix), n)) ## columns to list
  13. r <- unlist(lapply(lapply(lst,function(x) x * -1), rank)) ## column-wise ranking and result collapsing
  14. RankMatrix <- aMatrix ## copy sparse matrix
  15. RankMatrix@x <- r ## replace non-zero elements with rank
  16. return(RankMatrix)
  17. } # Function Ends
  18.  
  19. ## Function to retain Top N and Bottom N records
  20. GetTopNBottomN <- function(aMatrix,rMatrix){
  21. #aMatrix = original SparseMatrix, rMatrix = RankMatrix
  22. n = 2 ## Top 2 and Bottom 2 Elements across all columns
  23. for(j in 1:ncol(aMatrix)){
  24. MaxValue = max(rMatrix[,j])
  25. if(MaxValue <= 2 * n) next ##Ignore the column if there are less than or equal to 2*n nonzero values
  26. for (i in 1: nrow(aMatrix)){
  27. if(rMatrix[i,j] >n & rMatrix[i,j] <= MaxValue-n){ #IF Cond
  28. aMatrix[i,j] = 0
  29. } #IF ends
  30. }
  31.  
  32. }
  33. return(aMatrix)
  34. }
  35.  
  36. #Output
  37. RankMatrix = GenerateRankMatrix(TestMatrix) #Genrate Rank Matrix
  38. #Output Matrix
  39. GetTopNBottomN(TestMatrix,RankMatrix)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement