Как рассчитать% разницы между столбцами матрицы и добавить к значениям матрицы при ее итерации - PullRequest
2 голосов
/ 03 июля 2019

У меня есть матрица недельных продаж (столбцы) для нескольких магазинов (строк).Цель состоит в том, чтобы рассчитать процентную разницу между неделями и выделенными значениями, которые являются ненормальными, например, увеличение / уменьшение продаж на 70 - 100%.У меня проблемы с циклической логикой и правильным доступом к элементам матрицы.

До сих пор я настроил цикл, который вычисляет разницу в одной строке и повторяет эту строку 16 раз вместо переходак следующей строке в матрице.Кроме того, я добавил условный оператор, чтобы выделить значения с помощью condformat, но я не верю, что я использую его правильно.

library(condformat)

#Specifies location of cvs file  
dat <- read.csv("S:/Brooke Hughes/APT Store Level Data 5_28 .csv")

# Prints Table values
dat

# Checks class of data set
class(dat)

# Converts dataframe into matrix
mat <- as.matrix(dat)

class(mat)
condformat(mat)

# Sets column number to begin iterations 
for (col(mat) in colnames(mat)) {
  s1 <- col(mat)
  s2 <- col(mat) + 1
  #calculates percentage increase for two dates   
  percdiff <- ((s2-s1)/s1)

  print(percdiff)


  # Colors in cells of weeks with sales abnormalities 
  if (percdiff > .8 ){
    rule_text_color(s1, na.color= "#7D00FF")  
    rule_text_color(s2, na.color= "#7D00FF") 
  }


}

Я ожидаю, что на выходе отобразится исходная матрица со столбцом вычисления процентной разницы между двумя значениями столбца, использованными для его получения.Затем в столбце с процентной разницей я хочу, чтобы значения были выделены, если они превышают определенный порог.

Пока у меня есть это

  [,1] [,2]      [,3] [,4] [,5]      [,6]      [,7]  [,8]      [,9] [,10]      [,11]      [,12]      [,13]      [,14]      [,15]
[1,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[2,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[3,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[4,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[5,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...